自学shell编程——第4讲(自定义函数)

自学shell编程——第4讲(自定义函数)

1. 定义函数框架。函数名()-{-函数体-}。以下几点注意:

  1. shell函数不需要形参。在函数内部,使用$# 和 $* 分别表示函数内部的参数个数和参数内容。函数体内的参数命令与调用函数的名字不一定一致,或者你可以不使用变量传参,直接内容。(这里写个代码,方便大家理解)
#!/bin/bash
add()
{
	echo "$num1 + $sum2 = `expr $num1 + $sum2 `"
}
$number1=3;$number2=4
$num1=3;$sum2=4
add $number1 $number2              #变量名不一致。输出3 + 4 = 7
add 3 4                            #直接内容。输出3 + 4 = 7
add $num1 $sum2                    #变量名一致。输出3 + 4 = 7
add 3 4 5                          #多了一个输入,但是函数只使用前两个。输出3 + 4 = 7
  1. shell函数输出返回值使用return。默认return 0。且return只能返回int类型(0,1,2,…)。不能返回字符串。
  2. 调用函数的时候,要传递参数,不使用括号。fun str1 str2;//正确。fun(str1,str2);//错误

2. 简单函数举例

#!/bin/bash
#认识函数中参数和返回值

fun()
{
	echo $*           #输出参数内容
	echo $#           #输出参数个数
	#对所有参数进行遍历
	for argu in $*
	do
		echo $argu
	done
	return 2          #这里只能是Int类型,否则报错
}
str="good morning everyong"
fun good morning everyong  #或者fun $str
echo $?              #输出上一条shell语句的返回值,即函数fun的返回值2
test -e file.txt     #判断file.txt文件是否存在
echo $?              #输出上一条test语句的返回值。若file.txt存在,则返回0

3. 数字炸弹游戏(随机设置一个100以内的炸弹数字),然后游戏者输入一个0~100的数字,进行判断,输出小于或大于该数,最后输出“Good.Game over. The boom number is $boom”。

#!/bin/bash
boom=$[RANDOM%100+1]                               #随机生成一个100以内的炸弹数字
read -p "Game start!!! Please input a munber(0~100):" num
boom()
{
	if [ $num -eq $boom ]
	then
		echo "Good. Game over. The boom number is $num."
	else
		if [ $num -lt $boom ]
		then
			read -p  "Error. please input a number(>$num) is:" num
			boom $num $boom
		else
			read -p  "Error. please input a number(<$num) is:" num
			boom $num $boom
		fi
	fi
}

boom $num $boom
#执行:./game.sh

运行结果如下:在这里插入图片描述
当然这个脚本可以用while循环完成,你可以自己写一下。(也可以查看我的另一篇文章自学shell编程——练习题)

4. 总结:多多练习,任何语言只有多练习,才能发现更多问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值