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
...

おすすめ記事