十五. [博学谷学习记录]|超强总结,用心分享|大数据 Linux(十五)

66 阅读3分钟
1.1.1.1. continue****

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

对上面的例子进行修改:

test27.sh

| #!/bin/bash while  : do     echo -n "输入 1 到 5 之间的数字: "    read aNum    case  **aNum in        12345) echo "你输入的数字为aNum** **in**        1 **|** 2 **|** 3 **|** 4 **|** 5 **)**  **echo** "你输入的数字为 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/bash​demoFun (){​   echo "这是我的第一个 shell 函数!"​}echo "-----函数开始执行-----"demoFunecho "-----函数执行完毕-----"

 

输出结果:

-----函数开始执行-----这是我的第一个 shell 函数!-----函数执行完毕-----****

 

注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。

2)定义一个带有return语句的函数

test29.sh

funWithReturn (){     echo "这个函数会对输入的两个数字进行相加运算..."     echo "输入第一个数字: "read aNum     echo "输入第二个数字: "     read anotherNum    echo "两个数字分别为 aNumaNum 和 anotherNum !"     echo "两个数的和为:((((aNum+anotherNum))"    **return** 100**}** funWithReturn **echo** "退出状态码: ? !"

 

输出类似下面:

这个函数会对输入的两个数字进行相加运算...输入第一个数字:1000输入第二个数字:2000两个数字分别为 1000 和 2000 !两个数的和为:3000退出状态码: 100 !

 

  1. 获取函数的运算结果
#!/bin/bashfunWithReturn (){  s**=0  #求1-n的和,1为传入的第一个参数  for(( i=1;i<=1为传入的第一个参数  **for** **((**  i**=**1 **;** i **<=** **1 ; i**=i+1 ))  do    s=((((** **s** + i** **))**  **done**  #返回计算结果  **echo**  **s   return 0;****}#调用函数,并传入参数,求1-100的和#result用户获取函数的返回结果,也就是echo后边的内容result**=** (funWithReturn100)echo "1(funWithReturn 100)****echo** "1- **1的和:result"#状态码为0表示正常退出,非0表示不正常退出**echo** "退出状态码: ? !"

 

 

1.1.2. 函数参数****

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 的形式来获取参数的值,例如,1表示第一个参数,$2表示第二个参数...

带参数的函数示例:

test30.sh

#!/bin/bashfunWithParam (){    echo "第一个参数为 1!"    echo "第二个参数为1 !"    **echo** "第二个参数为 2 !"    echo "第十个参数为 10!"    echo "第十个参数为10 !"    **echo** "第十个参数为 {10} !"    echo "第十一个参数为 11!"    echo "参数总数有{11} !"    **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 "第一个元素为: myarray[0]" echo "第二个元素为:{my_array[0]}" **echo** "第二个元素为: {my_array[1]}" echo "第三个元素为: myarray[2]" echo "第四个元素为:{my_array[2]}" **echo** "第四个元素为: {my_array[3]}" 

 

执行脚本,输出结果如下所示:

chmod+xtest.sh chmod +x test.sh ./test.sh 第一个元素为: A第二个元素为: B第三个元素为: C第四个元素为: D