我想写这个庆典环路的zsh如何在zsh中暂停?
while true; do echo "print something"; read -p "pause"; done
这个循环回声,然后等待用户按Enter键。如果我按原样输入,则read语句不会暂停,导致zsh无限回显“打印某些内容”,而无需等待用户按Enter键。
我想写这个庆典环路的zsh如何在zsh中暂停?
while true; do echo "print something"; read -p "pause"; done
这个循环回声,然后等待用户按Enter键。如果我按原样输入,则read语句不会暂停,导致zsh无限回显“打印某些内容”,而无需等待用户按Enter键。
它看起来像-p
做一些事情在zsh
不同。您可能需要诸如read some_variable\?pause
之类的东西。
因为这是他们唯一的搜索结果我能找到的,我发现它有用的,但仍然有点混乱,这里是把它的另一种方式:如果你想要做的就是呼应一行文本,并等待用户按下输入...... read \?"I am waiting for you to press [Enter] before I continue."
#!/bin/zsh
pause()
{
echo "$*"; read -k1 -s
}
现在我们可以调用函数与任何提示文字:
pause "paused! press any key to continue"
pause "you can write anything here :)"
在zsh
:
read -s -k '?Press any key to continue.'
从man zshbuiltins
:
-s
如果从终端读取不回显字符。-k
只能读取一个字符。name?prompt
名称被省略,因而用户输入存储在REPLY
变量(和我们忽略它)。第一个参数包含一个?
,因此,该字的其余部分被用作在标准错误的提示,当外壳是交互式的。要包括提示后一个新行:
read -s -k $'?Press any key to continue.\n'
$''
在man zshmisc
QUOTING
下说明。
最后,pause
功能,在一个脚本,做什么OP要求接受一个任意的提示信息:使用
#!/usr/bin/env zsh
pause() read -s -k "?$*"$'\n'
while true; do
echo "print something"
pause "pause"
done
'_'不起作用:zsh中抛出一个错误'的zsh:只读变量:_ '。其他任何工程虽然。谢谢你的提示。 – k107 2011-03-07 03:17:08
+1相同的技术在ksh中起作用。 – 2011-03-07 05:08:31