\t
수평 탭을 갖는 옵션echo
wolf@linux:~$ echo hello
hello
wolf@linux:~$
wolf@linux:~$ echo -e '\thello'
hello
wolf@linux:~$
에도 비슷한 옵션이 있나요 read
?
wolf@linux:~$ read -p 'hello '
hello wolf
wolf@linux:~$
wolf@linux:~$ read -p '\thello '
\thello wolf
wolf@linux:~$
원하는 출력
wolf@linux:~$ read -p '\thello ' <- need something to produce something like tab or `\t` in `echo`
hello wolf
wolf@linux:~$
답변1
$'...'
이러한 이스케이프 시퀀스를 이해하려면 언제든지 ksh93 스타일 인용을 사용할 수 있습니다 .
IFS= read -r -p $'\thello ' var
(그리고 관련이 IFS=
없습니다 . 그것들 없이는 호출이 거의 의미가 없기 -r
때문에 여기에 추가하고 있습니다 ).read
이는 -p
표준 기능이 아닙니다 sh
. ksh/zsh에서는 -p
공동 프로세스에서 읽고 프롬프트가 지정됩니다 read 'var?Prompt: '
. bash
여기에 호환되지 않는 API를 도입하기로 선택한 것은 불행한 일입니다 . 하지만 꼭 그것을 사용할 필요는 없습니다. -p
휴대용으로 할 수 있습니다:
printf >&2 '\thello '
IFS= read -r var
printf
형식 매개변수와 지정자 매개변수에서 이러한 이스케이프 시퀀스를 인식합니다 %b
. echo
인식 여부 (또는 -e
인식 옵션 허용)는 구현에 따라 다르며 많은 구현( bash
내장 포함)의 경우 빌드 시간 및 런타임 설정에 따라 달라집니다.피하는 것이 가장 좋다.
답변2
언제든지 간단히 공백 8개를 추가할 수 있습니다.
read -p ' hello '
하지만 그렇습니다. 실제 탭 문자를 얻을 수도 있습니다.
read -p $'\t''hello '
또는
read -p "$(echo -e '\thello ')"
또는
read -p "$(printf '\thello ')"