다음과 같이 원격 호스트에서 일부 명령을 실행하려고 합니다.
ssh -t -t -l user 172.20.20.20 <<EOF
pid=$(ps -ef | grep [a]pp-management | awk '{print $2}') && kill -9 $pid && rm -rf CI/*
EOF
원격 서버에 로그인 상태를 유지하고 종료가 실행되지 않는 경우는 다음과 같습니다.
user@ubuntu:~$ pid= && kill -9 && rm -rf CI/*
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
둘 다 rm
처형되지 않았는데, 내가 뭘 잘못한 걸까요?
kill -9 명령에 아무것도 전달되지 않은 것을 확인했습니다. 이유는 무엇입니까?
답변1
$
구분된 문서의 기호에 의해 도입된 확장은 명령에 입력으로 전달된 문자열을 생성하기 전에 로컬로 평가됩니다 ssh
.
이를 방지하려면 구분된 문서에서 명령을 이스케이프하세요(예: 따옴표 사용).EOF
ssh ... <<"EOF"