私は通常、ここのドキュメントを使ってこのようなサーバースクリプトを実行します。
ただし、ディレクトリが存在するかどうかをテストすると、テストが失敗してもスクリプトは続行されます。なぜですか?
ssh $user@$ip /bin/bash <<SCRIPT
if [[ ! -d ~/.debfiles ]];then
echo "Error: debfiles doesnt exist" 2> ~/error.txt
exit 1
fi
SCRIPT
私はこれを私のローカルコンピュータで実行しています、問題のサーバーは仮想マシンです。
答え1
Kusalanandaが彼の編集で指摘したように、<<
あなたが言及している文法は次のとおりです。ここのドキュメント。
他のコメントで指摘したように、スクリプトの意図は少しあいまいですが、次のようにスクリプトを構成することを検討してください。
user=me
ip=myhost
dir=Test
if ssh "$user"@$ip /bin/bash << SCRIPT
[[ ! -d ~/"$dir" ]]
SCRIPT
then
echo "Error: $dir doesnt exist"
exit 1
fi
echo the script continues
そのように:
$ ssh me@myhost rm -rf Test
$ ./test.sh
Error: Test doesnt exist
$ ssh me@myhost mkdir Test
$ ./test.sh
the script continues
このような単純なhere文書の場合、$dir
非協調的な文字が含まれていない場合は、「string here」で十分です。
if ssh "$user"@$ip /bin/bash <<< "[[ ! -d ~/$dir ]]"
then
...
答え2
exit
リモートサーバーで実行中です。そこで実行されている部分が終了して終了ssh
し、残りのローカル部分が続きます。
君は何も見せなかった」テストが失敗しても継続「」というメッセージがリモートホストまたはローカルシステムに存在するため、私たちはあなたが試していることを自信を持ってテストすることはできません。