私の条件が私のUbuntuシステムでtrueの場合は、変数を設定したいと思います。
これは私のif文が正しいことを証明します。
$ (if [ 1 == 1 ]; then echo "hi there"; fi);
hi there
これは変数を設定できることを証明します。
$ a=1
$ echo $a
1
これは、if文の変数設定が機能しないことを示しています。
$ (if [ 1 == 1 ]; then a=2; fi);
$ echo $a
1
どんなアイデアがありますか?私が持っているすべてGoogleの調査これはうまくいくべきことを示しています...
ベストアンサー1
(...)
コマンド部分が問題です。括弧は別々のサブシェルを作成します。サブシェルは親シェルから環境を継承しますが、その中に設定された変数は、サブシェルが終了しても新しい値を保持しません。これは以下にも当てはまります。他の人ディレクトリの変更、シェルオプションの設定など、サブシェル内の環境を変更します。
したがって、サブシェルを削除します。
if [ 1 = 1 ]; then a=2; fi
echo "$a"