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