BASH解决方案嵌入式读取-p在一段时间内读取循环

时间:2015-06-12 19:22:22

标签: bash while-loop

我知道在这个论坛和网络上可能已经有过各种各样的问题,但我尝试了所有方法都无济于事。我有一个读取循环与"读取-p"包含在其中的if语句中。据我所知,标准输入是将.txt文件泵入while循环,因此read-p无法通过管道传输到用户输入。这将是我的追索权。请看一下代码。

while read orasid1
do
if [ "$prompt1" = "yes" ]; then
read -p "Do you want to change the password for $username on $orasid (y/n)?" Yesno2

    case ${Yesno2:0:1} in
            y|Y )

    echo "Yes"
#Call SQL script here
    ;;
    * )
    "No"
    ;;
    esac

else

exit 16

fi

done < $log_dir/pwd_change_$server.txt

我会感激任何人都能给予的帮助。

1 个答案:

答案 0 :(得分:2)

为外部读取使用不同的文件句柄:

while read -u 3 orasid1; do
    ...
done 3< "$log_dir/pwd_change_$server.txt"

这对于循环体内可能从标准输入读取(必要或不读取)的任何命令(不仅仅是read)都很有用。

您仍然可以自由地将脚本的标准输入从另一个文件重定向,例如,如果您希望将固定响应存储到文件中的各种提示中。