일부 프로그램의 출력을 가져와서 변수에 할당하려고 합니다. 이 작업을 수행하기 위해 백틱을 사용하지만 필요한 경우 다른 방법으로 전환할 수 있습니다. 나는 종종 내 변수에서 예상한 결과를 얻지 못하는 것을 발견했습니다. 아래는 간단한 사례입니다. 내 실제 예는 더 복잡합니다. 백틱으로 실행하는 프로그램의 출력이 무엇이든 나는 그것이 변수에 있기를 원합니다. 그게 가능합니까?
test=`echo [asdf]`
만약 내가 echo $test
하나만 보여준다면.
답변1
- 백틱을 사용하지 마세요, 사용
$()
. - 리터럴 문자열 주위에 작은따옴표를 사용하고이중 변수 주변, 그래서
echo "$test"
. - 사용하지 마세요
echo
, 사용printf
.
결국:
$ test="$(printf '%s' '[asdf]')"
$ printf "%s\n" "$test"
[asdf]
답변2
[
가장 간단한 대답은 특수 패턴 문자로 처리되지 않도록 이스케이프 처리하는 것입니다 . ( ]
따옴표가 앞에 나오지 않으면 닫는 문은 문자 그대로 처리됩니다 [
.)
test=$(echo \[asdf])