私はこれで働いています:
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
以下のようなスクリプトがあります:
#!/bin/bash
e=2
function test1() {
e=4
echo "hello"
}
test1
echo "$e"
どちらが戻ります:
hello
4
しかし、関数の結果を変数に割り当てても、グローバル変数e
は変更されません。
#!/bin/bash
e=2
function test1() {
e=4
echo "hello"
}
ret=$(test1)
echo "$ret"
echo "$e"
戻り値:
hello
2
この場合のevalの使用について聞いたので、これを次のように実行しましたtest1
。
eval 'e=4'
しかし同じ結果です。
なぜ変更されないのか説明してもらえますか?test1
関数のエコーを保存しret
てグローバル変数を変更するにはどうすればよいですか?