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


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