function命令简介:
定义函数
1.命令格式:
function 函数名 {
content #内容
}
或者
函数名() {
content #内容
}
调用函数只要在需要调用的地方输入函数名即可
2.命令功能:
使得脚本简洁,调用重复内容
3.命令参数:
自定义函数执行状态返回值
return # #为0-255
且函数可以接受参数
FUNCTION () {
content
}
FUNCTION 5 6
$1=5
$2=6
4.命令实例:
1、使用函数添加用户,函数执行状态返回值使用return定义,并传输一个参数给函数。
vim useradd.sh
#!/bin/bash
#
USERADD () {
USERNAME=$1
if ! id -u $USERNAME &> /dev/null ; then
useradd $USERNAME
echo "$USERNAME" | passwd --stdin $USERNAME &> /dev/null
return 0
else
echo "$USERNAME is exist."
return 3
fi
}
USERADD $1
if [ $? -eq 0 ]; then
echo "useradd user finished"
else
echo "useradd user failure"
fi
2、使用函数调用,进行ping命令
vim PING.sh
#!/bin/bash
#
PING() {
if ping -c 1 -W 1 $1 &> /dev/null ; then
return 0
else
return 1
fi
}
for I in {96..106}; do
if PING 192.168.1.$I &> /dev/null ; then
echo "192.168.1.$I is up"
else
echo "192.168.1.$I is down"
fi
done
for I in {96..106}; do
if PING 172.16.1.$I &> /dev/null ; then
echo "172.16.1.$I is up"
else
echo "172.16.1.$I is down"
fi
done
3、写一个脚本;使用函数完成
1、函数能够接受一个参数,参数为用户名;判断一个用户是否存在
如果存在,就返回此用户的shell和UID;并返回正常状态值
如果不存在,就说此用户不存在;并返回错误状态值
2、在主程序中调用函数;
扩展1:在主程序中,让用户自己输入用户后,传递给函数来进行判断;
扩展2:在主程序中,输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户;
如果用户输入的用户不存在,请用户重新输入;但如果用户输入的是Q或q就退出;
#!/bin/bash
#
USERID () {
if id -u $1 &> /dev/null ; then
echo "`grep '^$1' /etc/passwd | awk -F : '{print $NF,$3}'`"
return 0
else
echo "$1 is not exist."
return 3
fi
}
read -p "Input one UserName:" USERNAME
until [ $USERNAME == 'q' -o $USERNAME == 'Q' ]; do
USERID $USERNAME
if [ $? -eq 0 ]; then
read -p "Input one UserName:" USERNAME
else
read -p "No $USERNAME,please Input one UserName Again:" USERNAME
fi
done