作業ディレクトリとスクリプトを実行する正しいディレクトリを比較しようとしています。以下はシェルスクリプトの抜粋です。
CURR_DIR=echo pwd
echo $CURR_DIR
if [ "$CURR_DIR" == "/proj/project_a/scripts_shell" ]; then
echo "You are running script from correct directory"
fi
この場合、私は /proj/project_a/scripts_shell (現在の作業ディレクトリ) にいることを確認しましたが、何らかの理由で、if ステートメントでこれを検出できません。そのため、メッセージは印刷されません。
これの何が問題なのですか?
答え1
これを試して:
if [ "$PWD" = "/proj/project_a/scripts_shell" ]; then
echo "You are running the script from the correct directory"
fi
問題は、 を実行するとCURR_DIR=echo pwd
、シェルがpwd
環境変数を にCURR_DIR
設定してを呼び出すことですecho
。コマンドの出力を変数にキャプチャする必要がある場合は、 を実行するだけですVAR=$(cmd)
。
答え2
これはBASHでコマンドの結果を文字列に保存するための表記法です
CURR_DIR=$(pwd)
または
CURR_DIR=`pwd`
CURR_DIR=echo pwd
これを入力すると、CURR_DIR
単に「pwd」文字列が作成されます。これがecho関数の動作です。たとえば、シェルで次の行を実行します。
echo blah blah blah
これは blah コマンドでは何も行いません。