将文件输入用作shell脚本的stdin不起作用

时间:2013-07-12 10:39:30

标签: linux file shell ubuntu input

我有以下脚本代码:

test.sh

echo "BEGIN"
while read CMD <&1; do
    [ -z "$CMD" ] && continue
    case "$CMD" in
    start)
            echo "get_start"
            ;;
    stop)
            echo "get_stop"
            ;;
    *)
            echo "get_uknown_command"
            ;;
    esac
    echo "END";
done

当我用它运行时:

$./test.sh <input.txt

我的脚本被锁定了

input.txt中

start
stop
sthh

为什么我的脚本被锁定了?我该如何解决这个问题?

BTW:如果我手动输入数据,那么脚本将无法锁定。

1 个答案:

答案 0 :(得分:3)

您需要<&1为什么? 删除它,它的工作原理。

while read CMD; do

./test.sh  < input.txt 
BEGIN
get_start
END
get_stop
END
get_uknown_command
END