zsh에서 명령을 실행하면 read -p 'erasing all directories (y/n) ?' ans
오류가 발생합니다.
read: -p: no coprocess
그러나 bash에서는 프롬프트를 인쇄합니다. zsh에서 이 작업을 어떻게 수행합니까?
답변1
계속 사용할 수 있습니다 read
. 프롬프트를 먼저 인쇄하세요. In은 사용할 프롬프트를 표시하는 대신 코프로세스에서 입력을 읽어야 함 zsh
을 나타냅니다.-p
POSIX와 호환되는 다음을 수행할 수 있습니다.
printf >&2 '%s ' 'erase all directories? (y/n)'
read ans
ksh/zsh read 'var?prompt'
또는 bash 와 마찬가지로 read -p prompt var
프롬프트는 스크립트의 일반 출력을 오염시키지 않도록 stderr에서 표시됩니다.
답변2
아니면 zsh
좀 더 비슷한 것
() {
local compcontext='yn:yes or no:(y n)'
vared -cp 'erasing all directories (y/n) ? ' ans
}
이를 통해 답변이 완료됩니다.
답변3
다음과 동일 ksh
:
IFS= read -r 'ans?erasing all directories (y/n)? '
또한 에는 zsh
예 /아니요 답변이 read
있습니다 .-q
if read -q '?erasing all directories (y/n)? '; then
rm -rf -- *(D/)
fi
yes를 입력하면 true가 반환되므로 를 누를 필요가 없습니다 Enter.