我知道在这个论坛和网络上可能已经有过各种各样的问题,但我尝试了所有方法都无济于事。我有一个读取循环与"读取-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
我会感激任何人都能给予的帮助。
答案 0 :(得分:2)
为外部读取使用不同的文件句柄:
while read -u 3 orasid1; do
...
done 3< "$log_dir/pwd_change_$server.txt"
这对于循环体内可能从标准输入读取(必要或不读取)的任何命令(不仅仅是read
)都很有用。
您仍然可以自由地将脚本的标准输入从另一个文件重定向,例如,如果您希望将固定响应存储到文件中的各种提示中。