저는 일반적으로 여기 문서를 사용하여 이와 같은 서버 스크립트를 실행합니다.
그러나 디렉토리가 존재하는지 테스트하면 테스트가 실패하더라도 스크립트가 계속됩니다. 이유는 무엇입니까?
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
종료되고 나머지 로컬 부분이 계속됩니다.
넌 아무것도 보여주지 않았어"테스트가 실패하더라도 계속 진행”라는 메시지가 원격 호스트나 로컬 시스템에 존재하므로 우리는 귀하가 시도하고 있는 것을 자신 있게 테스트할 수 없습니다.