关于bash:如何在zsh脚本中提示是/否样式确认?

How can I prompt for yes/no style confirmation in a zsh script?

使用zsh,我试图在我的~/.zprofile中迈出一步,在这里我互动地问一个是/否样式的问题。起初我尝试了这种bash风格的方法,但我看到了这种形式的错误:

read: -p: no coprocess

(我知道zsh语法通常与bash的语法不同-我尝试在它前面使用sh仿真命令-emulate -LR sh,但没有区别)。

此页暗示语法可能不同,因此在本页和zsh手册页的指导下,我尝试了以下方法:

read -q REPLY?"This is the question I want to ask?"

相反,这会失败,并出现以下错误:

/home/user/.zprofile:5: no matches found: REPLY?"This is the question I want to ask?"

如何向zsh提出简单的是/否问题?理想情况下,该命令只会吞下一个字符,不需要按Enter/Return,并且是"安全的",即,除非输入"Y"或"Y",否则后续测试默认为否/假。


来自ZSH - Read

If the first argument contains a ‘?’, the remainder of this word is used as a prompt on standard error when the shell is interactive.

你必须引用整个论点

1
read -q"REPLY?This is the question I want to ask?"

这将提示您使用This is the question I want to ask?,并返回在REPLY中按下的字符。

如果不引用问号,zsh会尝试将参数作为文件名进行匹配。如果找不到任何匹配的文件名,它会向no matches found投诉。


有关zsh阅读的文档,请参阅zsh手册。尝试:

1
read REPLY\?"This is the question I want to ask?"