[英]How to return data from a bash shell script subroutine?
給出以下兩個可執行腳本:
----- file1.sh
#!/bin/sh
. file2.sh
some_routine data
----- file2.sh
#!/bin/sh
some_routine()
{
#get the data passed in
localVar=$1
}
我可以將'data'傳遞給另一個腳本中的子例程,但我也想返回數據。
是否可以從some_routine返回信息?
e.g: var = some_routine data
讓子例程輸出一些東西,然后使用$()
來捕獲輸出:
some_routine() {
echo "foo $1"
}
some_var=$(some_routine bar)
這是不允許的,只需設置全局變量的值(..所有變量在bash中是全局的)
如果
some_routine() {
echo "first"
echo "foo $1"
}
some_var=$(some_routine "second")
echo "result: $some_var"
它們沒問題。但結果似乎是由第一個“回聲”決定的。另一種方法是使用“eval”。 some_var返回“第一”
some_routine()
{
echo "cmj"
eval $2=$1
}
some_routine "second" some_var
echo "result: $some_var"
這樣,some_var返回“second”.bash不會直接返回字符串。所以我們需要一些技巧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.