ZSH: Read command fails within bash function "read:1: -p: no coprocess"
The –p
option doesn’t mean the same thing to bash
’s read
built-in command
and zsh
’s read
built-in command.
In zsh
’s read
command, –p
means –– guess –– “Input is read from the coprocess.”
I suggest that you display your prompt with echo
or printf
.
You may also need to replace –n 1
with –k
or –k 1
.
The zsh
equivalent of bash
's read -p prompt
is
read "?Here be dragons. Continue?"
Anything after a ?
in the first argument is used as the prompt string.
And of course you can specify a variable name to read into (and this may be better style):
read "brave?Here be dragons. Continue?"
if [[ "$brave" =~ ^[Yy]$ ]]
then
...
fi
(Quoting shell variables is generally a good idea, too.)
This code seems to do what you want in zsh.
(Note that the question you refered to explicitly mentions it is for bash).
#!/usr/bin/env zsh test() { echo -n "Here be dragons. Continue?" read REPLY if [[ $REPLY =~ ^[Yy]$ ]] then echo "You asked for it..." fi } test
Three comments: