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
|
相關文章
- Linux Shell 自定義函式Linux函式
- shell 函式定義函式
- Oracle 自定義函式Oracle函式
- perl自定義函式函式
- Hive常用函式及自定義函式Hive函式
- hive 3.0.0自定義函式Hive函式
- Hive中自定義函式Hive函式
- MySQL建立自定義函式MySql函式
- python 自定義函式Python函式
- oracle 自定義聚合函式Oracle函式
- mysql自定義函式篇MySql函式
- Oracle中自定義函式Oracle函式
- 一個自定義函式函式
- Oracle自定義聚集函式Oracle函式
- ORACLE 自定義函式BUG?Oracle函式
- SQL SERVER 自定義函式SQLServer函式
- SQL 自定義函式FUNCTIONSQL函式Function
- Linux Shell 自定義函式(定義、返回值、變數作用域)介紹Linux函式變數
- PHP 自定義函式用法及常用函式集合PHP函式
- java自定義equals函式和hashCode函式Java函式
- mysql 自定義分析函式 least 及 日期函式MySql函式AST
- laravel 自定義全域性函式Laravel函式
- Laravel 自定義函式存放位置Laravel函式
- Laravel 新增自定義助手函式Laravel函式
- Laravel自定義輔助函式Laravel函式
- GRDB自定義的純函式函式
- HIVE中的自定義函式Hive函式
- Sql Server系列:自定義函式SQLServer函式
- Oracle自定義聚集函式薦Oracle函式
- Teradata自定義函式Replace函式
- python教程:自定義函式Python函式
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- MySQL使用之五_自定義函式和自定義過程MySql函式
- JavaScript 設計模式系列 – 自定義函式(惰性函式)JavaScript設計模式函式
- 動畫函式的繪製及自定義動畫函式動畫函式
- JavaScript 設計模式系列 - 自定義函式(惰性函式)JavaScript設計模式函式
- Shell中函式的定義和使用函式
- VBA 自定義常用函式 (備用)函式