2016-07-14 18 views
0
function to_call() 
{ 
    echo "#1 is $1" 
} 

function call() 
{ 
    local val=$(to_call testInput) 
} 

端末に出力がありません。どうして?私はそれを変更した場合bashシェルで変数の出力を変数に代入する

:代わりに "値が1である" の

function to_call() 
{ 
    echo "#1 is $1" 
    return 1 
} 

function call() 
{ 
    local val=$(to_call testInput) 
    echo "value is $val" 
} 

が、それは "値が#1がtestInputである" です。何が起こるのですか?

ターミナルの "to_call関数"のエコーを出力し、戻り値の状態を使用する方法はありますか?

+0

> "bashにはreturn文がありますが、関数のステータスはexit文で指定された値のような数値です(" http:// www。 linuxjournal.com/content/return-values-bash-functions) – pce

答えて

1

command substitution(これはsubshellを呼び出します)のために出力がありません。つまり、出力が再割り当てされます。関数のstdoutへの出力がローカル変数に再割り当てされます。

bash returnステートメントは、シェルを終了せずに のようなステータスのみを指定することです(exit)。それは関数の "終了ステータス"($?)を返すことができます。

サブシェルの範囲内の変数には、親プロセスからアクセスできません。

関連する問題