bash函数

函数:功能,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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章