私は通常、ここのドキュメントを使ってこのようなサーバースクリプトを実行します。
ただし、ディレクトリが存在するかどうかをテストすると、テストが失敗してもスクリプトは続行されます。なぜですか?
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
...