簡體   English   中英

如何從bash shell腳本子程序返回數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM