如何输入'y'而不必按ENTER键?

时间:2014-01-19 14:35:27

标签: bash

使用bash脚本的这一部分作为示例

{   
    read -p "Do you want to update the tv feed? [y/n/q] " ynq
    case $ynq in
    [Yy]* ) rm ~/cron/beeb.txt; /usr/bin/get-iplayer --type tv>>~/cron/beeb.txt;; 
    [Nn]* ) echo;;
    [Qq]* ) exit;;
    * ) echo "Please answer yes or no. ";;
    esac
}

如何获取它以便您可以按 y 而不必按 Enter 以便接受它?

2 个答案:

答案 0 :(得分:5)

-n 1添加到read命令的选项中。来自bash手册页:

-n nchars
    read  returns after reading nchars characters rather than
    waiting for a complete line of input.
顺便说一下,你还应该引用"$ynq" - 有时用户只按返回,如果变量不是双引号,可能会导致奇怪的行为。另请注意,read -n是bash扩展名,因此请确保您使用bash(即#!/bin/bash或类似内容的第一行),而不是brand-x shell({{1或类似的)。

答案 1 :(得分:3)

-n1read一起使用,将输入长度的最大数量指定为1:

read -n1 -p "Do you want to update the tv feed? [y/n/q] " ynq