函数定义、函数参数、跨脚本调用函数
2.6.函數使用
函數定義
示例(文件名稱為func1.sh):
#!/bin/bash ? ##定義函數 hello() { ??? echo "Hello there today's date is `date +%Y-%m-%d`" ??? return 2???? ##返回值其實是狀態碼,只能在[0-255]范圍內 } hello echo $????? ##獲取函數的return值,通過$?來獲取 echo "now going to the function hello" echo "back from the function" |
運行結果如下: [root@hadoop test]# sh func1.sh Hello there today's date is 2017-01-02 2 now going to the function hello back from the function |
函數調用:
function hello()?
或 function hello
或 hello
?
注意:
1.必須在調用函數地方之前,先聲明函數,shell腳本是逐行運行。不會像其它語言一樣先預編譯
2.函數返回值,只能通過$? 系統變量獲得,可以顯示加:return返回,如果不加,將以最后一條命令運行結果,作為返回值。 return后跟數值n(0-255)
?
?
腳本調試:
sh -vx helloWorld.sh
或者在腳本中增加set -x
?
函數參數
定義文件名param.sh
#!/bin/bash funWithParam() { ??? echo "第一個參數為 $1 !" ??? echo "第二個參數為 $2 !" ??? echo "第十個參數為 $10 !" ??? echo "第十個參數為 ${10} !" ??? echo "第十一個參數為 ${11} !" ??? echo "參數總數有 $# 個!" ??? echo "作為一個字符串輸出所有參數 $* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73 |
運行結果: [root@hadoop test]# sh param.sh 第一個參數為 1 ! 第二個參數為 2 ! 第十個參數為 10 ! 第十個參數為 34 ! 第十一個參數為 73 ! 參數總數有 11 個! 作為一個字符串輸出所有參數 1 2 3 4 5 6 7 8 9 34 73 ! |
注意,$10 不能獲取第十個參數,獲取第十個參數需要${10}。當n>=10時,需要使用${n}來獲取參數。
?
創建文件param2.sh
#!/bin/bash funWithReturn(){ ??? echo "這個函數會對輸入的兩個數字進行相加運算..." ??? echo "輸入第一個數字: " ??? read aNum ??? echo "輸入第二個數字: " ??? read anotherNum ??? echo "兩個數字分別為 $aNum 和 $anotherNum !" ??? return $(($aNum+$anotherNum)) } funWithReturn echo "輸入的兩個數字之和為 $? !" |
運行如下: [root@hadoop test]# sh param2.sh 這個函數會對輸入的兩個數字進行相加運算... 輸入第一個數字: 23 輸入第二個數字: 45 兩個數字分別為 23 和 45 ! 輸入的兩個數字之和為 68 ! |
?
跨腳本調用函數
假如上訴腳本文件param.sh保存在路徑: /home/test/test/param.sh
則可在腳本fun_other.sh中調用腳本param.sh中的函數
#!/bin/bash . /home/test/test/param.sh???? ##注意: .? 和?? /? 之間有空格 #或者source /home/test/test/param.sh funWithParam 11 22 33 44 55 66 77 88 99 100 101 |
執行命令之后的效果如下: ? [root@hadoop test]# sh fun_other.sh 第一個參數為 1 ! 第二個參數為 2 ! 第十個參數為 10 ! 第十個參數為 34 ! 第十一個參數為 73 ! 參數總數有 11 個! 作為一個字符串輸出所有參數 1 2 3 4 5 6 7 8 9 34 73 ! 第一個參數為 11 ! 第二個參數為 22 ! 第十個參數為 110 ! 第十個參數為 100 ! 第十一個參數為 101 ! 參數總數有 11 個! 作為一個字符串輸出所有參數 11 22 33 44 55 66 77 88 99 100 101 ! |
?
總結
以上是生活随笔為你收集整理的函数定义、函数参数、跨脚本调用函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell编程--流程控制for,do-
- 下一篇: 银谷普惠两年没还了