1.1.1.1. continue****
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
对上面的例子进行修改:
test27.sh
| #!/bin/bash while : do echo -n "输入 1 到 5 之间的数字: " read aNum case **aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!" continue echo "游戏结束" ;; esacdone | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo "游戏结束" 永远不会被执行。
1.1. 函数****
1.1.1. 语法****
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
shell中函数的定义格式如下:
| [ function ] funname(){ action; [return int;]} |
|---|
说明:****
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
实例:****
1)定义一个函数并进行调用
test28.sh
| #!/bin/bashdemoFun (){ echo "这是我的第一个 shell 函数!"}echo "-----函数开始执行-----"demoFunecho "-----函数执行完毕-----" |
|---|
输出结果:
| -----函数开始执行-----这是我的第一个 shell 函数!-----函数执行完毕-----**** |
|---|
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。
2)定义一个带有return语句的函数
test29.sh
| funWithReturn (){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: "read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 anotherNum !" echo "两个数的和为:aNum+anotherNum))" **return** 100**}** funWithReturn **echo** "退出状态码: ? !" |
|---|
输出类似下面:
| 这个函数会对输入的两个数字进行相加运算...输入第一个数字:1000输入第二个数字:2000两个数字分别为 1000 和 2000 !两个数的和为:3000退出状态码: 100 ! |
|---|
- 获取函数的运算结果
| #!/bin/bashfunWithReturn (){ s**=0 #求1-n的和,1 ; i**=i+1 )) do s=s** + i** **))** **done** #返回计算结果 **echo** **s return 0;****}#调用函数,并传入参数,求1-100的和#result用户获取函数的返回结果,也就是echo后边的内容result**=** 1的和:result"#状态码为0表示正常退出,非0表示不正常退出**echo** "退出状态码: ? !" |
|---|
1.1.2. 函数参数****
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 的形式来获取参数的值,例如,1表示第一个参数,$2表示第二个参数...
带参数的函数示例:
test30.sh
| #!/bin/bashfunWithParam (){ echo "第一个参数为 2 !" echo "第十个参数为 {10} !" echo "第十一个参数为 # 个!" echo "作为一个字符串输出所有参数 $* !"} funWithParam 1 2 3 4 5 6 7 8 9 34 73 |
|---|
输出结果:
| 第一个参数为 1 ! 第二个参数为 2 ! 第十个参数为 10 ! 第十个参数为 34 ! 第十一个参数为 73 ! 参数总数有 11 个! 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 ! |
|---|
1.2. 数组
1.2.1. 定义数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
与大部分编程语言类似,数组元素的下标由0开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
array_name=(value1 ... valuen)
实例:
test31.sh****
| #!/bin/bash my_array**=(** "A" "B" "C" "D" ) #我们也可以使用下标来定义数组: array_name [ 0 **]=**value0 array_name [ 1 **]=**value1 array_name [ 2 **]=**value2 |
|---|
1.2.2. 读取数组
读取数组元素值的一般格式是:
| ${array_name[index]} |
|---|
1.2.3. 实例
test32.sh
| #!/bin/bash my_array**=(** "A" "B" "C" "D" ) echo "第一个元素为: {my_array[1]}" echo "第三个元素为: {my_array[3]}" |
|---|
执行脚本,输出结果如下所示:
| ./test.sh 第一个元素为: A第二个元素为: B第三个元素为: C第四个元素为: D |
|---|