문자열을 닫는 작은 따옴표를 제외하고는 아무 것도 해석되지 않으므로 작은 따옴표를 작은 따옴표로 묶을 수 없습니다. 당신은 "'"
와 함께 단일 인용 문자열을 연결할 수 있습니다
ssh host 'for pid in $(ps -ef | grep "some process" | awk '"'"'{print $2}'"'"'); do kill -9 $pid; done'
또는 탈출 널링 작은 따옴표 (\'
는) :
ssh host 'for pid in $(ps -ef | grep "some process" | awk '\''{print $2}'\''); do kill -9 $pid; done'
Strong Quoting를 참조하십시오.
당신의 명령을 $IFS
단락 지어진 인수의 몇 가지로 해석됩니다 오류의 원인 :
for pid in $(ps -ef | grep "some process" | awk {print
}); do kill -9 $pid; done
더 $2
에 없다 문자열,부터은 쉘 변수로 해석되며 일반 쉘 컨텍스트에서이 변수의 값은 비어 있습니다.
따라서, 당신은 서버에 다음 명령을 보낸 : 터미널에서이 명령을 실행하면, 당신은 AWK에서 같은 오류가 발생합니다
for pid in $(ps -ef | grep "some process" | awk {print }); do kill -9 $pid; done
.
이 경우 "pkill -f"프로세스를 사용할 수 있습니다. – ymonad
그것은 특정 이름의 모든 프로세스를 죽이지는 않습니까? –