按空格键继续

按空格键继续

如何停止 bash 脚本直到用户按下Space

我想在我的脚本中提出这个问题

按空格继续或CTRL+C退出

然后脚本应该停止并等待,直到按下空格键。

答案1

您可以使用read

read -n1 -s -r -p $'Press space to continue...\n' key

if [ "$key" = ' ' ]; then
    # Space pressed, do something
    # echo [$key] is empty when SPACE is pressed # uncomment to trace
else
    # Anything else pressed, do whatever else.
    # echo [$key] not empty
fi

' '将上面的空格替换''为 Enter 键、$'\t'Tab 键。

答案2

pause此 SO Q&A 中讨论的方法可能是您在 Windows 上处理 BAT 文件时习惯的行为的最佳替代方法。

$ read -rsp $'Press any key to continue...\n' -n1 key

例子

在这里,我运行上面的代码,然后只需按任意键,在本例中为该D键。

$ read -rsp $'Press any key to continue...\n' -n1 key
Press any key to continue...
$ 

参考

答案3

您可以创建一个pause函数以供其在脚本中的任何位置使用,例如:

#!/bin/bash
pause(){
 while read -r -t 0.001; do :; done # dump the buffer
 read -n1 -rsp $'Press any key to continue or Ctrl+C to exit...\n'
}
echo "try to press any key before the pause, it won't work..."
sleep 5
pause
echo "done"

答案4

这是一种适用于 和 的方法bashzsh并确保终端的 I/O:

# Prompt for a keypress to continue. Customise prompt with $*
function pause {
  >/dev/tty printf '%s' "${*:-Press any key to continue... }"
  [[ $ZSH_VERSION ]] && read -krs  # Use -u0 to read from STDIN
  [[ $BASH_VERSION ]] && </dev/tty read -rsn1
  printf '\n'
}
export_function pause

把它放进你的.{ba,z}shrc大正义!

相关内容