터미널에 대한 에코 브래킷 기호

터미널에 대한 에코 브래킷 기호

명령이 예상대로 echo Hello World인쇄되지만 Hello World오류 echo Hello (World)가 발생합니다 syntax error near unexpected token `('.

(), , 같은 {}괄호는 마커이고 특별한 의미가 있다는 것을 알고 있는데 , 스크립트에서 이를 []어떻게 "이스케이프"합니까 ?bash

답변1

(이는 실제로 대괄호의 단순한 합계를 제외하면 어휘 분석기 의미의 토큰이 아닙니다 ).

{특히, }참조가 전혀 필요하지 않습니다.

$ echo {Hello World}
{Hello World}

{( 또는 }명령의 첫 번째 단어로 사용하지 않는 한 키워드로 해석됩니다. 또는 {a,b}단일 단어 내에 쉼표나 이중 점을 사용하면 중괄호 확장입니다.)

[]또한 전역 문자로만 특별하며, 일치하는 파일 이름이 없으면 기본 동작은 단어를 그대로 두는 것입니다.

그러나 어쨌든 이를 벗어나려면 일반적으로 작은따옴표나 큰따옴표로 인용합니다.

echo "(foo bar)"
echo '(foo bar)'

또는 약간 피곤하긴 하지만 관련 문자를 하나씩 이스케이프 처리하세요.

echo \(foo\ bar\)

또는 원하는 조합:

echo \(fo"o bar"')'

바라보다:

답변2

질문에 구체적으로 : 실제 "탈출"은 다음과 같습니다.

echo hello \(world\)

쉘 인수를 사용하여 에코하는 "깨끗한" 호출은 다음과 같습니다.

echo "hello (world)"

..."Escape"도 무료로 받을 수 있습니다.

echo hello "("world")"

매우 정의할 수 없습니다. 등. "에코를 갖고 놀 수 있어요."

"hello $world"그리고

'hello $world'

아니 똑같아! 먼저 world=mars.

관련 정보