无法通过读取比较收到的用户输入

时间:2013-12-09 09:31:16

标签: bash shell

我有以下shell脚本:

#!/bin/bash

if [ "`read -n 1`" == "c" ] ; then
    printf "\nfoo\n"
    exit 0
fi

printf "\nbar\n"
exit 0

但是,无论输入如何,我总是得到bar作为输出:

$ ./test.sh
c
bar
$ ./test.sh
d
bar

为什么会出现这种情况,我需要在shell脚本中进行哪些更改?

1 个答案:

答案 0 :(得分:3)

您需要先将其读入变量,否则您只是比较读取的output value(这是空值)。

以下应该工作:

#!/bin/bash

read -n 1 ch
if [ "$ch" == "c" ] ; then
    printf "\nfoo\n"
    exit 0
fi

printf "\nbar\n"
exit 0