Bash 스크립트에서 대괄호와 같은 특수 문자를 처리하는 방법은 무엇입니까?

Bash 스크립트에서 대괄호와 같은 특수 문자를 처리하는 방법은 무엇입니까?

일부 프로그램의 출력을 가져와서 변수에 할당하려고 합니다. 이 작업을 수행하기 위해 백틱을 사용하지만 필요한 경우 다른 방법으로 전환할 수 있습니다. 나는 종종 내 변수에서 예상한 결과를 얻지 못하는 것을 발견했습니다. 아래는 간단한 사례입니다. 내 실제 예는 더 복잡합니다. 백틱으로 실행하는 프로그램의 출력이 무엇이든 나는 그것이 변수에 있기를 원합니다. 그게 가능합니까?

test=`echo [asdf]`

만약 내가 echo $test하나만 보여준다면.

답변1

  1. 백틱을 사용하지 마세요, 사용 $().
  2. 리터럴 문자열 주위에 작은따옴표를 사용하고이중 변수 주변, 그래서 echo "$test".
  3. 사용하지 마세요echo, 사용 printf.

결국:

    $ test="$(printf '%s' '[asdf]')"
    $ printf "%s\n" "$test"
    [asdf]

답변2

[가장 간단한 대답은 특수 패턴 문자로 처리되지 않도록 이스케이프 처리하는 것입니다 . ( ]따옴표가 앞에 나오지 않으면 닫는 문은 문자 그대로 처리됩니다 [.)

test=$(echo \[asdf])

관련 정보