実現したいこと
bashシェルスクリプトで、グローバルに定義した変数を関数内で変更して、その後の処理で変更を反映したいです
発生している問題・分からないこと
関数を呼んだ結果を変数に入れる際は、関数内での変更処理は反映されず、
単純に関数を呼ぶだけであればグローバル変数の変更が反映されているように見えており、この違いがわからずでした・・・
(値の変更処理と、レスポンスを返す変数を分離すべきということでしょうか・・)
○関数を呼んだ出力を変数に入れる場合
bash
1#/bin/bash 2 3aaa="AAAA" 4echo ${aaa} 5 6abc () { 7 aaa="aaaa" 8 echo $aaa 9} 10res=$(abc) 11echo $res 12echo "---:$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
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
上記のコードによる差分
補足
特になし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/06/17 08:36