私のスクリプトには、ssh
リモート サーバーにログインしていくつかのコマンドを実行するコマンドが含まれています。このコマンドは、ファイルが存在するかどうかを確認し、存在しない場合はスクリプト全体から出力される必要があります。
ssh $user@$hostname "if[ -f $filename];then
echo"file exists Proceeding next steps;
else
"echo file doesn't exist";
exit 1;
fi"
ただし、ファイルが存在する場合は上記のコマンドが正常に実行されますが、ファイルが存在しない場合は、exitコマンドがsshセッションから抜けるだけです。
スクリプトを終了するのではなく、スクリプト内の他のコマンドが引き続き実行されます。
あなたの提案に協力してください。
答え1
事前に設定された特定の変数 (例: your ) を必要とする ssh でスクリプトを実行するには、$filename
次の手順を実行します。
ssh user@host 'bash -s' < local_script.sh "$filename"
local_script.sh の内容:
#!/bin/bash
[ $# -ne 1 ] && echo '$0 needs at least 1 parameter' 1>&2 && exit 2
filename="$1"
if [ ! -f "$filename" ]; then
echo "[ $filename ] does not exist"
exit 1
fi
echo "[ $filename ] exists"
実行するコマンドで渡される変数が必要ない場合は、次のようにします。
ssh user@host '
if [ ! -f "test/stuff" ]; then
echo "File does not exist"
exit 1
fi
echo "File exists"
'
シングルクォートに注意してください'
。これにより、コマンドが拡大。
$filename
また、コード行数を減らすために firstが存在しないことを確認し、タブ/空白を使用しました。
コマンドを読みやすくするには、これを試してください
ssh user@host <<'ENDSSH'
if [ ! -f "test/stuff" ]; then
echo "File does not exist"
exit 1
fi
echo "File exists"
ENDSSH