#!/bin/bash
function a()
bflag=b $1
return $bflag
function b()
echo "0"
#切割old_ifs=$ifs
ifs='|'
dataarr=$
ifs=$old_ifs
for d in $; do
a $flag=$?
done
如果使用
函式a中使用echo返回值,呼叫形式flag=`a $`,如果$包含(或者(,就無法傳參
shell獲取函式的返回值
背景:定義了乙個函式,比對本地和線上伺服器集群數量差別,想要獲取不同集群的個數。shell和其他語言的函式返回值還是差別挺大的。
定義乙個函式
functionname()
獲得函式的返回值
1.函式預設是將標準輸出傳遞出來,不是返回值。
所以如果直接呼叫functionname,實際上是將輸出傳遞回來
例如:a=`functionname`
將函式functionname的標準輸出傳遞給a
2.呼叫函式不需要加(),直接寫函式名就可以
functionname
3.使用$?接收上一程式的返回值狀態,也就是return的值
functionname
echo $?
這裡輸出的是函式的返回值
4.函式的返回值一般是0和1,表示成功和失敗,如果一定要返回其他整數,定義乙個全域性變數,在函式中改變它
遇到的問題:
將函式返回值賦值時報錯: return: diffrentcluster: numeric argument required
雖然不影響使用,但看著總是不好,查了一下說shell的函式預設是返回0和1來表示是否成功的,如果一定要返回值的話,可以在函式外定義乙個全域性變數,然後在函式中賦值這個變數。這樣呼叫函式後,全域性變數就變了,達到同樣的效果
例如:通過函式增加num值
#!/bin/sh
num=10
add()
add輸出的結果是11(變數自增我用num=num+1是無效的,不知道為什麼,必須要用num++)
其他shell中函式的引數定義也和其他語言不一樣,不是放在括號內。函式中定義時直接在函式體內使用$1、$2....$n來表示引數
呼叫時直接 functionname para1 para2 ..paran來呼叫函式
shell for迴圈程式設計
在shell程式設計中,for迴圈語句的程式設計的格式為 for 變數 in do done 將in後面的資料一一的輸入到變數裡面,先輸入第乙個,然後執行do後面的語句,然後輸入第二個,執行do後面的語句,以此類推,直到輸入完畢 例子 shell for for迴圈 bin bash for i i...
shell for迴圈語句
for 定義變數 do 使用變數,執行動作 done 結束標誌 bin bash for n in seq 2 210 do echo n donefor n in12 3 do echo n donefor n in 從10到1步長為2 do echo n donefor var do echo ...
shell for迴圈與陣列應用介紹
讀取乙個檔案,把每一行賦值給乙個陣列的變數,然後用for迴圈列印出來 複製 如下 bin sh i 1sum sed n tmp.txt 計算檔案的總行數 echo sum whilewww.cppcns.com read line do程式設計客棧 arr i line i expr i 1 do...