我想为zsh编写这个bash循环
while true; do echo "print something"; read -p "pause"; done
Run Code Online (Sandbox Code Playgroud)
这个循环回声,然后等待用户按回车键.如果我按原样输入,则read语句不会暂停,导致zsh无限地回显"print something"而不等待用户按Enter键.
She*_*ton 11
因为这是我能找到的唯一搜索结果,我发现它有用但仍然有点令人困惑,这是另一种方式:如果你想做的就是回显一行文字并等待用户按下输入...
read \?"I am waiting for you to press [Enter] before I continue."
在zsh
:
read -s -k '?Press any key to continue.'
Run Code Online (Sandbox Code Playgroud)
来自man zshbuiltins
:
-s
如果从终端读取,请不要回显字符。-k
仅读取一个字符。name?prompt
名称被省略,因此用户输入存储在REPLY
变量中(我们将其忽略)。第一个参数包含一个?
,因此,当外壳是交互式的时,该单词的其余部分用作标准错误的提示。在提示后添加换行符:
read -s -k $'?Press any key to continue.\n'
Run Code Online (Sandbox Code Playgroud)
$''
下解释QUOTING
在man zshmisc
。
最后,一个pause
函数在脚本中接受任意提示消息,该脚本执行OP所要求的操作:
#!/usr/bin/env zsh
pause() read -s -k "?$*"$'\n'
while true; do
echo "print something"
pause "pause"
done
Run Code Online (Sandbox Code Playgroud)