質問: A else echo NG fi 環境変数sumの中身をaとして設定し if文の中で条件式には「環境変数sumの中身が空文字列でなければ」を設定し 真であればsumの中身をAに書き換える、というようなif文を作成したつもりだったのですが コマンド実行後にecho $sumと入力してもaのままになっています 変数の中身が〇〇の場合は中身を●●に書き換えるという単純なシェルスクリプトを作ってみたかったのですが コマンドのどこに不備があるのかどなたか教えていただけないでしょうか? よろしくお願いします。
回答: 環境変数やシェル変数への値の設定は`sum=a`や`sum=A`のように書き、`=`の前後に空白を入れてはいけません。実際にコマンドラインで`sum = a`を実行して、どのように解釈されるか確かめてみるといいでしょう。 また、`$sum=A`と書いたのでは、`sum`の値`a`が展開され`a=A`を実行することになります。 さらに言うと、シェルスクリプトの中で環境変数の値を変更しても、その値が有効なのはそのシェルスクリプトの中と、そこから起動されるプロセスだけです。シェルスクリプト終了後のコマンドラインで`sum`の値を確認してもそれは変更されていません。 ``` #!/bin/bash export sum=a if [ -n "$sum" ] ; then sum=A echo $sum else echo NG fi ``` ということを理解した上で、`source ファイル名`か`. ファイル名`とコマンドラインで実行すれば、`echo $sum`すると`A`となっているのを確認できるはずです。