2014-01-19 35 views
2

使用bash脚本的这一部分作为一个例子如何在不必按ENTER的情况下输入'y'?

{ 
    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 
} 

我如何得到它,这样就可以按Ÿ,而不必按输入它被接受吗?

+0

您可以使用'-n'指定要读取的字符数。搜索btw时的第一个结果。 – keyser

回答

4

添加-n 1read命令的选项。从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(#!/bin/sh或类似的)。

+0

是的,它是#!/ bin/bash,但那只是脚本的一部分,但非常感谢,现在它的工作:) – boudiccas

2

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

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