bash グローバル変数を関数内で変更する処理

実現したいこと

bashシェルスクリプトで、グローバルに定義した変数を関数内で変更して、その後の処理で変更を反映したいです

発生している問題・分からないこと

関数を呼んだ結果を変数に入れる際は、関数内での変更処理は反映されず、
単純に関数を呼ぶだけであればグローバル変数の変更が反映されているように見えており、この違いがわからずでした・・・
(値の変更処理と、レスポンスを返す変数を分離すべきということでしょうか・・)

○関数を呼んだ出力を変数に入れる場合

bash

1#/bin/bash2 3aaa="AAAA"4echo ${aaa}5 6abc () {7 aaa="aaaa"8 echo $aaa9}10res=$(abc)11echo $res12echo "---:$aaa"

-> % ./test.sh
AAAA
aaaa
---:AAAA

○単純に関数実行のみ

-> % cat test.sh #/bin/bash aaa="AAAA" echo ${aaa} abc () { aaa="aaaa" echo $aaa } abc echo "---:$aaa"

-> % ./test.sh
AAAA
aaaa
---:aaaa

該当のソースコード

特になし

試したこと・調べたこと

上記の詳細・結果

上記のコードによる差分

補足

特になし

コメントを投稿

0 コメント