Bash-Shell脚本中止而不会出错

时间:2013-12-19 21:28:06

标签: linux bash shell centos6

在Debian上可以使用以下代码,但在CentOS上它只是中止而没有任何错误。错误是什么?我无法理解。

    echo "Test 1"
    ANSWER=""
    read -p "Enter y or n " ANSWER;
    echo "Test 2"

输出看起来像是那样:

    Test 1

我也尝试了没有参数-p的read命令,但这也无效:

    echo "Test 1"
    ANSWER=""
    echo "Enter y or n "
    read ANSWER;
    echo "Test 2"

输出:

    Test 1
    Enter y or n

如果我在命令行执行命令它是否正常工作,应该怎么做。该脚本有以下“标题”:#!/ bin / bash

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

试试这个

#!/bin/bash

echo "Test 1"
read -p "Enter y/n: " ANSWER
echo " Test 2: ${ANSWER}"

在答案结束时你不需要关闭。

答案 1 :(得分:0)

@ user2966991 - 从stdin读取的脚本位于更大的while循环中,该循环通过stdin读取文件。这不行。尝试将stdin重定向到不同的文件处理程序。

考虑这个示例代码。这不会起作用,因为while循环和read都是从stdin读取的。

#!/bin/bash
cat samplefile | while read line; do
    read -p "$line (y/n)?" ANSWER
done

现在考虑其他代码。

#!/bin/bash
# save stdin to file descriptor 5
exec 5<&0

cat samplefile | while read line; do
    read -p "$line (y/n)?" ANSWER <&5
done

# restore stdin and close file descriptor 5
exec 0<&5 5>&-

我个人更喜欢输入重定向而不是管道。

cat file | while read var; do
...
done

可以写成

while read var; do
...
done < file

下次请在此发布您的脚本,否则您将无法得到任何答案。