shell自定義函式
轉載地址:https://www.cnblogs.com/oxspirt/p/7246075.html
“sum=$(fsum 2 5)”這種方式,是將標準輸出(echo 出來的東子)傳遞給主程式的變數,而不是返回值!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash function sum(){ val1= $1 val2= $2 val3=$(( $1 + $2 )) echo $val3 } #Call function with 2 parameters and it return 1 parameter. ret_val=$(sum 10 20) echo $ret_val |
指令碼執行結果: ret_val = $(sum 10 20) 將sum 10 20 的輸出傳遞給變數ret_val
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash prod=1 twoPow(){ for ((i=0;i< $1 ;i++)); do prod=$(( $prod *2)) done } echo "Enter a number" read num twoPow $num echo $prod |
執行指令碼 c.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/bin/bash twoPow() { prod=1 for ((i=0;i< $1 ;i++)); do prod=$(( $prod *2)) done return $prod } echo "Enter a number" read num twoPow num |
----------------------------------------------------------------------------------------------------------------------------------
Shell的函式在使用之前必須先定義,定義格式:
1 2 3 4 5 | [ function ] funname [()] { action; [ return int ;] } |
- 可以帶function fun()定義,也可以直接fun() 定義,不帶任何引數。
- 引數返回,可以顯示加:return 返回,如果不加,將以最後一條命令執行結果,作為返回值。 return後跟數值n(0-255)
示例
1 2 3 4 5 6 7 8 9 10 | fsum 2 5 fsum(){ echo $ 1 ,$ 2 return $ 1 +$ 2 } sum=$(fsum 2 5 ) echo $? echo "sum=$sum" |
執行輸出:
fsum: not found
7
sum=2,5
從上面這個例子我們可以得到幾點結論:
- 必須在呼叫函式地方之前,宣告函式,shell指令碼是逐行執行,這點和編譯型語言不通。
- 函式返回值,只能通過$? 系統變數獲得,而“sum=$(fsum 2 5)”這種方式,是將標準輸出傳遞給主程式的變數,而不是返回值!
Shell函式可以在指令碼檔案中使用之前定義它,也可以把函式定義在一個獨立的檔案使用點號(.)命令來引用它。如function.sh和testshell.sh在同一目錄中,function.sh
1 2 3 4 | fsum(){ echo $ 1 ,$ 2 return $(($ 1 +$ 2 )) } |
testshell.sh
1 2 3 | #! /bin/sh . ./function.sh fsum 2 5
|
相關文章
- Oracle 自定義函式Oracle函式
- Hive常用函式及自定義函式Hive函式
- hive 3.0.0自定義函式Hive函式
- Hive中自定義函式Hive函式
- python教程:自定義函式Python函式
- java自定義equals函式和hashCode函式Java函式
- PHP 自定義函式用法及常用函式集合PHP函式
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- Laravel 新增自定義助手函式Laravel函式
- laravel 自定義全域性函式Laravel函式
- Laravel 自定義函式存放位置Laravel函式
- Laravel自定義輔助函式Laravel函式
- FlinkSQL自定義函式開發SQL函式
- 自定義Spring ShellSpring
- Shell中函式的定義和使用函式
- MySQL使用之五_自定義函式和自定義過程MySql函式
- JavaScript 設計模式系列 – 自定義函式(惰性函式)JavaScript設計模式函式
- Ignite自定義函式注意事項函式
- VBA 自定義常用函式 (備用)函式
- php自定義函式放哪兒PHP函式
- matlab自定義函式建立與使用Matlab函式
- MySQL全面瓦解18:自定義函式MySql函式
- shell函式函式
- Apache Phoenix自定義函式(UDF)實踐Apache函式
- sql中select列有自定義函式 dblinkSQL函式
- Qt自定義動畫插值函式QT動畫函式
- 單據列表呼叫自定義SQL函式SQL函式
- HIVE自定義函式的擴充套件Hive函式套件
- Excel vba自定義函式公式智慧提示Excel函式公式
- 22.python自定義函式(format,zip)Python函式ORM
- Clickhouse 使用者自定義外部函式函式
- 【vue】自定義一個websocket工具函式VueWeb函式
- 皕傑報表之自定義函式函式
- Hive--->建立自定義的UDTF函式Hive函式
- 動畫函式的繪製及自定義動畫函式動畫函式
- 自定義shell提示內容
- 自定義生成器函式模擬Python內建函式filter()函式PythonFilter
- MySQL自定義函式與儲存過程MySql函式儲存過程