SSH를 통해 명령을 실행할 수 있습니다.
$ ssh user@host bash -c "'echo x '"
x
그러나 나는 탈출할 수 없다는 것을 알았습니다 '
.
$ ssh user@host bash -c "'echo \''"
bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file
나도 그것을 시도했지만 \\
아무것도 작동하지 않습니다.\\\
\\\\
아이디어는 비슷한 것을 제공하는 것입니다 ls -1tr /var/log/ | head -10 | xargs -d '\n' -I {} echo {}
. 하지만 \'
작동하지 않아서 통과하는 방법을 모르겠습니다 '\n'
. 이 목표를 어떻게 달성할 수 있나요?
답변1
지옥을 인용하고 있는 자신을 발견하면 여기 문서가 종종 도움이 됩니다.
ssh user@host bash <<END
echo \'
END
즉, 작은따옴표로 묶인 문자열에는 작은따옴표가 포함될 수 없습니다.
답변2
GNU Parallel은 내부적으로 문자열을 여러 번 참조합니다. 다음과 같은 목적으로 인용 엔진을 사용할 수 있습니다.
$ parallel --shellquote
write your string here, which may contain ' or " or \n
ctrl-D
두 번 인용해야 하는 경우:
parallel --shellquote --shellquote
오락을 위해:
echo "'" | parallel --shellquote --shellquote --shellquote --shellquote --shellquote --shellquote