SSHスクリプトによるディレクトリのテスト - 何も起こりません

SSHスクリプトによるディレクトリのテスト - 何も起こりません

私は通常、ここのドキュメントを使ってこのようなサーバースクリプトを実行します。

ただし、ディレクトリが存在するかどうかをテストすると、テストが失敗してもスクリプトは続行されます。なぜですか?

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し、残りのローカル部分が続きます。

君は何も見せなかった」テストが失敗しても継続「」というメッセージがリモートホストまたはローカルシステムに存在するため、私たちはあなたが試していることを自信を持ってテストすることはできません。

関連情報