나는 그것을 bash에서 찾았습니다.
echo `echo \\`
출력 \
\
하지만
echo `echo \\ `
아무것도 출력되지 않습니다
답변1
이것백슬래시 스타일 명령 대체에서 백슬래시의 문서화된 동작은 다음과 같습니다.:
이전 스타일의 백틱 대체 형식을 사용하는 경우 백슬래시는 "$", "`" 또는 "\"가 뒤에 오지 않는 한 문자 그대로의 의미를 유지합니다.
즉, 백슬래시는 달러 기호, 백틱 및 백틱을 이스케이프합니다.기타 백슬래시처리를 위해 쉘에 명령을 제공하기 전(백슬래시 이스케이프 및 따옴표의 일반적인 처리 전 포함) 이는 다음을 의미합니다.
`echo \\ `
동등하다
$(echo \ )
그리고 공백을 출력합니다. 해당 단일 공백은 인수로 외부에 삽입된 다음 일반적으로 필드 분할 중에 손실되므로 인수 없이 실행 echo
됩니다 .echo
반면에
`echo \\`
\
명령 끝에 매달린 부분을 두는 것은 일반적으로 불법이며(다른 곳에서 해당 줄을 계속하라는 의미임) 리터럴로 처리됩니다. bash
둘 다 dash
좋아 tcsh
하지만 zsh
그렇지 않습니다. 명시적으로 명시되지 않은 것 같습니다.POSIX에서는또는 다른 곳에서는 이것이 구현 정의 동작이라고 가정합니다.
대신 $( ... )
명령 대체를 사용하면 중단 없이 모든 스크립트를 작성할 수 있습니다. 백틱 교체보다 거의 항상 낫습니다.