基本语法:
函数是一串命令的集合,如果脚本中有重复代码时可以考虑使用函数,在shell中函数的返回值只能为退出状态0或1。应注意函数名在脚本中的唯一。可以在函数名前加上fuction关键字也可省略。函数体中的命令集合必须含有至少一条命令(函数不允许空命令,与C不同)。
Linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
shell中函数的定义格式如下:
function 函数名 {
命令序列
}
或
函数名() {
命令序列
}
例子:
使用函数判断一个数是否为素数
#!/bin/bash
## 使用函数判断一个数是否是素数##
prime()
{
j=2
flag=1
if [ $1 -le 1 ];then
echo "不能输入小于1的整数."
exit 1
fi
if [ $# -lt 1 && $# -gt 2 ];then
echo "USAGE:$0{a number}"
exit 1
fi
`expr $1 + 1 &>/dev/null`
if [ $? -ne 0 ];then
echo "pls,input a number"
exit 1
fi
while [ $j -le `expr $1 / 2` ]
do
if [ `expr $1 % $j` -eq 0 ]
then
flag=0
break
fi
j=`expr $j + 1`
done
if [ $flag -eq 1 ];then
echo "$1 is a prime!"
else
echo "$1 is not a prime!"
fi
}
prime $1
运行结果:
./shell_prime.sh 2
2 is a prime!
./shell_prime.sh 3
3 is a prime!
[./shell_prime.sh 4
4 is not a prime!
函数返回值在调用该函数后通过 $? 来获得。
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。
例:shell函数开发URL检测脚本
#!/bin/bash
usages() {
echo "plz usage:$0 URL"
}
jiancha() {
wget -T 10 --tries=2 $1 &>/dev/null
tty=$?
if [ $tty -eq 0 ]; then
echo "$1 is yes"
else
echo "$1 is no"
fi
}
main () {
if [ $# -ne 1 ]
then
usages
fi
jiancha $1
}
main $*
使用这个脚本请先确认机器上已安装好wget这个命令,若没有安装请使用下列命令安装完成后在使用
yum install -y wget