shell 函数学习记录

基本语法:

        函数是一串命令的集合,如果脚本中有重复代码时可以考虑使用函数,在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值