bash 터미널에서 다음을 실행하면 제대로 작동합니다.
$ bash -c "python -c \"print 'helloworld'\""
---> 안녕하세요
그러나 SSH를 통해 이 작업을 수행하려고 하면 아무 것도 나오지 않습니다. 누군가 이 문제에 대해 알려줄 수 있습니까?
$ ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""
--> 아무것도
답변1
ssh [email protected] "$(cat <<'EOT'
bash -c "python -c \"print 'helloworld'\""
EOT
)"
이와 같은 여러 개의 내장 명령으로 인해 인용 악몽을 피하는 데 도움이 되는 간단한 함수/유틸리티에 대한 아이디어가 있습니다. 계속 지켜봐 주시기 바랍니다 ;-)
답변2
당신은 올바르게 인용하지 않습니다. 당신의 명령
ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""
원격 측에서 이것을 실행합니다.
bash -c "python -c "print 'helloworld'""
이는 다음과 같습니다.
bash -c "python -c print" 'helloworld'
이는 를 실행하여 python -c print
빈 줄을 인쇄합니다. (참고: helloworld
다음과 같이 작동합니다.이것.)
올바르게 인용하려면 더 많은 백슬래시가 필요합니다. 이것:
ssh [email protected] "bash -c \"python -c \\\"print 'helloworld'\\\"\""
원격 측에서 다음을 실행합니다.
bash -c "python -c \"print 'helloworld'\""
정확히 당신이 원했던 것입니다.
확인하다슈퍼유저에 대한 이 질문. 비슷한 경우에 도움이 되도록 만들어졌습니다.
bash -c
아마도 전혀 필요하지 않을 것입니다 . 이 코드는 로컬 셸에서 작동해야 합니다.
python -c "print 'helloworld'"
그래서 이것은 아마도 작동할 것입니다:
ssh [email protected] "python -c \"print 'helloworld'\""
아마도 SSH 서버가 meeee가 로그인 쉘로 선택한 쉘을 사용하여 명령을 실행하기 때문일 것입니다. 일부 이국적인 경우에는 python -c
제대로 실행되지 않을 수 있습니다. 하지만 실행될 것으로 예상하고 있으므로 bash -c
실행도 실행되어야 합니다.python -c