コマンドラインで条件付き変数を設定する

コマンドラインで条件付き変数を設定する

私の条件が私の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"

おすすめ記事