什么是Linux相当于DOS暂停?

时间:2020-03-06 14:21:27  来源:igfitidea点击:

我有一个Bash shell脚本,我想在其中暂停执行,直到用户按下某个键为止。在DOS中,可以使用" pause"命令轻松完成此操作。我可以在脚本中使用等效的Linux吗?

解决方案

read这样做:

user@host:~$ read -n1 -r -p "Press any key to continue..." key
[...]
user@host:~$

-n1指定仅等待一个字符。 -r将其置于原始模式,这是必需的,因为否则,如果我们按反斜杠之类的命令,则在按下下一个键之前不会注册。 -p指定提示,如果包含空格,则必须用引号引起来。仅当我们想知道他们按下了哪个键时才需要key参数,在这种情况下,我们可以通过$ key访问它。

如果我们使用的是Bash,还可以使用-t指定超时,这会导致在未按下键时read返回失败。因此,例如:

read -t5 -n1 -r -p 'Press any key in the next five seconds...' key
if [ "$?" -eq "0" ]; then
    echo 'A key was pressed.'
else
    echo 'No key was pressed.'
fi

试试这个:

function pause(){
   read -p "$*"
}

不带任何参数的" read"仅在我们按Enter键后才能继续。
如果我们按任意键,DOS" pause"命令将继续。如果我们想要这种行为,请使用read n1