sh
Debian에 연결 dash
다음 명령은 두 개의 빈 줄을 생성합니다.
sh -c 'echo "\n"'
왜 두 개의 빈 줄이 있습니까? 왜 하나도 없나요? 왜 \n
설명하나요?
그러나 busybox에서는 sh
동일한 명령을 실행하면 다음 줄이 생성됩니다.
\n
sh
다양한 플랫폼에서 백슬래시 처리가 균일합니까? 백슬래시를 처리해야 한다는 표준이 있나요?
답변1
as 인수와 함께 호출되면 POSIX+XSI 호환 echo
구현은 개행으로 \n
확장해야 하기 때문에 2개의 개행을 출력합니다. 이와 관련하여 귀하의 내장 기능이 호환되는 것으로 보입니다 .\n
echo
sh
POSIX에서는 출력이 필요하지만 일부 다른 echo
구현에서는 이를 달성하기 위한 옵션이 필요합니다. (이것은 동작이 지정되지 않는 POSIX 사양의 향후 버전에서 변경될 것입니다(XSI 옵션을 구현하는 시스템 제외).-e
echo -e
-e
이러한 이유 등으로 인해 를 피하고 echo
사용하는 것이 가장 좋습니다 printf
. 바라보다왜 printf가 echo보다 나은가요?더 알아보기.
어쨌든 모든 Bourne 유사 쉘에서 큰따옴표 안의 \
유일한 문자 는 \
, 및 문자(특별한 의미가 제거됨)와 개행 문자 $
(이를 제거하게 함)입니다."
`
\<NL>
계속하다), 아니요 n
. 그래서:
echo '\n'
echo "\n"
echo \\n
echo $'\\n'
이는 두 문자로 구성된 문자열이며 \
전달 n
됩니다 echo
(적어도 코드가 `...`
마지막 두 문자 내에 있지 않은 경우).
하나의 개행 문자로 구성된 문자열을 전달하려면 다음이 필요합니다.
echo $'\n'
이것은 현재 Bourne과 유사한 다른 많은 쉘에서 지원되는 ksh93 구문입니다. 이식성(Bourne과 유사한 쉘):
echo '
'
echo "
"
이렇게 하고 싶을 수도 있지만:
# at the top of the script:
NL='
'
# or (with the Bourne shell, use `...` instead):
eval "$(printf 'NL="\n" CR="\r" TAB="\t"')"
# and then:
echo "$NL"
가독성을 향상시킵니다.
Bourne과 유사한 쉘이 아닌 경우에는 상황이 다릅니다. 바라보다일반 문자처럼 특수 문자를 사용하는 방법은 무엇입니까?세부.