Shell脚本:如果在案例中没有按下任何键,如何继续读取命令?

时间:2016-08-30 10:04:45

标签: shell case pause

我试图在我的脚本中写入输入Y / y或等待10秒(没有按下任何键)的选项,否则终止脚本。例如,如果我正在运行脚本,我输入Y / y就可以了。如果在等待10秒钟时没有输入任何内容,它也应该工作。

到目前为止,我使用了Y / y并等待了10秒钟,但是如果没有按下按键,它就会终止。我知道这是由于我的情况,但如果没有按任何键来正常继续脚本,我也不知道如何捕获该选项。

到目前为止我的代码:

    read -t 10 "Enter Y/y or wait 10 seconds!" -n 1 -r REPLY
    case $REPLY in
     [yY])
              echo "correct";;
      *)
              echo "Terminating";;
    esac

感谢:)

1 个答案:

答案 0 :(得分:0)

如果您希望默认值为N,请使用:

read -t 10 "Enter Y/y or wait 10 seconds!" -n 1 -r REPLY
case ${REPLY:-N} in
  [yY])
    echo "correct";;
  *)
    echo "Terminating";;
esac

如果您希望默认值为“Y”,请使用:

read -t 10 "Enter Y/y or wait 10 seconds!" -n 1 -r REPLY
case ${REPLY:-Y} in
  [yY])
    echo "correct";;
  *)
    echo "Terminating";;
esac

此代码使用$REPLY的默认值。如果$REPLY未设置或为空,则在第一个版本中替换为“N”,在第二个版本中替换为“Y”。