我想將一個參數傳遞給一個函數,並從中返回一個計算出的值以供進一步處理。以下是示例代碼。從shell腳本中的函數返回值
#!/bin/bash
test()
{
echo $1
c=$(expr $1 + "10000")
return $c
}
var=$(test 10)
echo $var
我想獲取存儲在var中的c的值。任何人都可以請在這種情況下幫助。
我想將一個參數傳遞給一個函數,並從中返回一個計算出的值以供進一步處理。以下是示例代碼。從shell腳本中的函數返回值
#!/bin/bash
test()
{
echo $1
c=$(expr $1 + "10000")
return $c
}
var=$(test 10)
echo $var
我想獲取存儲在var中的c的值。任何人都可以請在這種情況下幫助。
您使用的函數的「返回值」是stdout。 「返回」將設置退出狀態($?),您可能不會使用它。 「測試」可能是名稱的錯誤選擇,因爲它被採用(qv。man test
)。 所以:
$ Test() { expr $1 + 10000; }
$ var=$(Test 10)
$ echo $var
10010
謝謝:)其工作... 我不會使用測試作爲我的函數名稱。這只是一個例子,但是我的命名錯誤。 非常感謝:) – Praveen
如果你希望做的就是增加10000至您的輸入,然後一個功能是矯枉過正。爲此,這不工作?
your_arg=10
var=$((${your_arg}+10000))
echo $var
舉個例子,我粘貼了這個簡單的代碼。我正在使用另一個函數將時間(HH:MM)轉換爲秒,並且這個函數被多次調用。 – Praveen
您的代碼中存在一些問題。
#!/bin/bash
它的工作原理,但它是沒有好主意,定義一個名爲test
功能,因爲test
is a standard Unix program。
test()
{
寫入調試輸出到標準誤差(& 2)代替標準輸出(& 1)。標準輸出用於返回數據。
echo "$1" >&2
用函數聲明變量local
以避免副作用。
local c=$(expr "$1" + "10000")
使用echo
而不是return
來返回字符串。 return
只能返回整數。
echo "$c"
}
var=$(test 10)
如果不確定總是引用參數。
echo "$var" >&2
儘管在上面提出的重複中使用了「string」這個詞,但它並不一定是一個字符串。重點是你只能從shell函數中返回一個無符號字節(0-255)。 – kojiro