내 스크립트에는 ssh
원격 서버에 로그인하고 몇 가지 명령을 실행하는 명령이 포함되어 있습니다. 이 명령은 파일이 있는지 확인하고 그렇지 않은 경우 전체 스크립트에서 나와야 합니다.
ssh $user@$hostname "if[ -f $filename];then
echo"file exists Proceeding next steps;
else
"echo file doesn't exist";
exit 1;
fi"
그러나 파일이 존재하면 위 명령이 성공적으로 실행됩니다. 그러나 파일이 존재하지 않는 경우에는 종료 명령이 ssh 세션에서 나옵니다.
스크립트를 종료하는 대신 스크립트의 다른 명령을 계속 사용합니다.
당신의 제안을 도와주세요.
답변1
이전에 설정된 특정 변수(예: your )가 필요한 ssh를 사용하여 스크립트를 실행하려면 $filename
다음을 수행하십시오.
ssh user@host 'bash -s' < local_script.sh "$filename"
local_script.sh의 내용:
#!/bin/bash
[ $# -ne 1 ] && echo '$0 needs at least 1 parameter' 1>&2 && exit 2
filename="$1"
if [ ! -f "$filename" ]; then
echo "[ $filename ] does not exist"
exit 1
fi
echo "[ $filename ] exists"
실행할 명령에 전달된 변수가 필요하지 않은 경우 다음과 같이 작동합니다.
ssh user@host '
if [ ! -f "test/stuff" ]; then
echo "File does not exist"
exit 1
fi
echo "File exists"
'
작은따옴표에 주의하세요 '
. 명령이 실행되지 않도록 방지합니다.퍼지는.
$filename
또한 코드 줄을 줄이고 탭/공백을 사용하기 위해 첫 번째 가 존재하지 않는지 확인했습니다 .
명령을 더 읽기 쉽게 만들려면 다음을 시도하십시오.
ssh user@host <<'ENDSSH'
if [ ! -f "test/stuff" ]; then
echo "File does not exist"
exit 1
fi
echo "File exists"
ENDSSH