SSH를 통해 실행될 때 grep '\;.'가 grep '\''\;.'\'''로 확장되는 이유는 무엇입니까?

SSH를 통해 실행될 때 grep '\;.'가 grep '\''\;.'\'''로 확장되는 이유는 무엇입니까?
$cat test.sh
ssh HOST -l root -o StrictHostKeyChecking=no -q "/bin/bash -l -c /bin/env | grep -w PATH | grep '\;.'"

$bash -x test.sh
+ ssh HOST -l root -o StrictHostKeyChecking=no -q '/bin/bash -l -c /bin/env | grep -w PATH | grep '\''\;.'\'''

답변1

이는 SSH와 관련이 없습니다. bash의 인수는 명령의 인수를 확장된 형식으로 표시하는 -xbash 명령에 대한 인수입니다 . set이것이 큰따옴표로 묶인 문자열이 작은따옴표로 묶인 문자열로 나타나는 이유입니다.

$ cat test.sh
echo "here are 'some single quotes' inside double quotes"

$ bash -x test.sh
+ echo 'here are '\''some single quotes'\'' inside double quotes'
here are 'some single quotes' inside double quotes

관련 정보