큰따옴표로 묶인 문자열에서 \를 bash로 해석하지 마세요.

큰따옴표로 묶인 문자열에서 \를 bash로 해석하지 마세요.

나는 이런 일을 할 수 있기를 원합니다

VAR='\\'
echo "$VAR"

그리고 결과를 얻으세요

\\

내가 실제로 얻는 결과는

\

사실, \\가 많이 포함된 매우 긴 문자열이 있는데, 이를 인쇄하면 bash는 첫 번째 \\를 제거합니다.

답변1

내장 명령이 지정된 문자열과 개행 문자를 그대로 출력하려면 다음이 bash필요합니다.echo

# switch from PWB/USG/XPG/SYSV-style of echo to BSD/Unix-V8-style of echo
# where -n/-e options are recognised and backslash sequences not enabled by
# default
shopt -u xpg_echo

# Use -n (skip adding a newline) with $'\n' (add a newline by hand) to make
# sure the contents of `$VAR` is not treated  as an option if it starts with -
echo -n "$VAR"$'\n'

또는:

# disable POSIX mode so options are recognised even if xpg_echo is also on:
set +o posix

# use -E to disable escape processing, and we use -n (skip adding a newline)
# with $'\n' (add a newline by hand) to make sure the contents of `$VAR` is not
# treated  as an option if it starts with -
echo -En "$VAR"$'\n'

이는 쉘에 따라 다르 bash므로 다른 쉘에 대해서는 다른 접근 방식을 취해야 하며 echo일부 구현에서는 임의의 문자열을 출력할 수 없다는 점에 유의하십시오.

printf그러나 여기서는 표준 명령을 사용하는 것이 더 좋습니다 .

printf '%s\n' "$VAR"

바라보다왜 printf가 echo보다 나은가요?더 알아보기.

답변2

2개 대신 4개의 백슬래시를 사용하세요.

관련 정보