Shell for迴圈 呼叫函式的使用情況

2022-09-23 15:30:11 字數 1227 閱讀 9595

#!/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...