SSHを実行してリモートでコマンドを実行しようとしていますが、EOF内で定義されている変数が選択されていません。変数がEOF内で取り込まれない
変数$BASE_PATH
は、私が名前で定義している別の変数の中で呼び出されていませんFOLDER_NAME
。スクリプト内でも言及されています。 EOF
を一重引用符('EOF'
)で使用することができませんでした。なぜなら、シェルからも変数を使用する必要があるからです。
#!/usr/bin/ksh
FILE_NAME=$2
jvm_list=$1
for jvm in `echo $jvm_list`
do
ssh $jvm << EOF
echo FILE_NAME=${FILE_NAME}
export BASE_PATH="\${WEB_DOMAIN_HOME}/Server";
echo BASE_PATH=\${BASE_PATH}; ##Value of BASE_PATH is getting picked up##
export FOLDER_NAME=\`ls -1d $"{BASE_PATH}"/properties* | grep -i -v old\` ##Value of BASE_PATH is coming blank here##
echo $FOLDER_NAME
EOF
done
感謝。私はあなたが言ったように私のコードを入れてみましたが、それはうまくいきません。 FOLDER_NAMEの$ BASE_PATHの値は空白になります。 エラー: - ls:0653-341ファイル/プロパティ*は存在しません。 –
@manavsharma、argh、facepalm、私はそこに追加されるはずだった正確なバックスラッシュを見逃しました。したがって、 '$ {var}'は外部シェル(メインスクリプト)からの値を与え、 '\ $ {var}'は(sshの)内部シェルからの値を与えます。 – ilkkachu
@ikkachu、それは最後に働いた。 :) どうもありがとう.. –