函数:功能,function
代码重用
函数:把其中某个特定的功能或者功能的代码,封闭起来,给一个名字,在使用的时候直接使用名字来调用,这就是函数的功能
定义方法一:
function FUNCNAME(不能以数据开头){
command
}
定义方法二:
FUNCNAME() {
COMMAND
}
#!/bin/bash # SHOWMENU() { cat << EOF d|D)show disk usages. m|M)show memory usages. s|S)show swap usages. q|Q)quiting. EOF } SHOWMENU read -p "Enter your choce: " CHOICE until [ $CHOICE == ‘q‘ -o $CHOICE == ‘Q‘ ];do case $CHOICE in d|D) df -lh;; m|M) free -m | grep "^Mem";; s|S) free -m | grep "^Swap";; *) SHOWMENU esac read -p "Enter your choce again: " CHOICE SHOWMENU done
调用函数的执行结果:
#!/bin/bash # TWOINT(){ A=10 B=21 C=$[$A+$B] echo $C } echo `TWOINT`
函数执行结果的运算
#!/bin/bash # TWOINT(){ A=10 B=21 C=$[$A+$B] echo $C } M=10 SUM=$[$M+`TWOINT`] echo $SUM
函数执行状态结果:
echo $?
自定义执行状态返回值:
return #(如果执行的时候遇到return,函数将退出)
0-255
#!/bin/bash # USERADD() { USERNAME=ogilvy if ! id -u $USERNAME &>/dev/null;then adduser $USERNAME echo "$USERNAME" | passwd --stdin $USERNAME &>/dev/null return 0 else return 1 fi } USERADD if [ $? -eq 0 ];then echo "$USERNAME add sucessful." else echo "$USERNAME existed." fi
接受参数的函数:
./a.sh m n
$1:m
$2:n
#!/bin/bash # USERADD() { USERNAME=$1 if ! id -u $1 &>/dev/null;then adduser $1 echo "$1" | passwd --stdin $1 &>/dev/null return 0 else return 1 fi } for I in {10..20};do USERADD user$I if [ $? -eq 0 ];then echo "user$1 add sucessful." else echo "user$1 existed." fi done
示例:
利用脚本跟参数,实现指定添加或删除参数,并以脚本中指定的用户列表添加用户:
#!/bin/bash # USERADD() { if ! id $1 &>/dev/null;then useradd $1 echo $1 | passwd --stdin $1 &>/dev/null return 0 else return 1 fi } USERDEL() { if id $1 &>/dev/null;then userdel -r $1 return 0 else return 2 fi } MAN() { cat << EOF --add,useradd in /tmp/usertest.txt file. --del,userdel in /tmp/usertest.txt file. q|Q,quiting useradmin.sh EOF } MAN read -p "Enter your options --add|--del: " OPTION until [ $OPTION == ‘Q‘ ] || [ $OPTION == ‘q‘ ];do case $OPTION in --add) for I in `cat /tmp/usertest.txt`;do USERADD $I if [ $? -eq 0 ];then echo -e "\033[31m$I add sucssful.\033[0m" else echo -e "\033[31m$I existded.\033[0m" fi done ;; --del) for I in `cat /tmp/usertest.txt`;do USERDEL $I if [ $? -eq 0 ];then echo -e "\033[31m$I del sucssful.\033[0m" else echo -e "\033[31m$I not existed.\033[0m" fi done ;; esac read -p "Enter your options --add|--del again: " OPTION done
原文地址:http://leozhenping.blog.51cto.com/10043183/1643547