如下所示,第一个循环的目标是从文本文件中读取步骤,而第二个循环旨在根据用户在屏幕上看到的内容接受来自用户的选项,并执行某些操作,比如说配置package.use或其他内容,然后继续执行下一步,直到步骤结束。在bash中这个嵌套的while循环有什么问题?
问题是第二个while循环既不会显示选项也不会连续读取文本文件中的步骤,它只是在执行第一步的步骤后退出while循环,在这种情况下,它显示执行的结果emerge --pretend ceph
并退出两个循环。
步骤文本文件:
ceph
jdk
firefox
...
嵌套while循环:
#/bin/bash
STEPS="./steps"
while read -r line;
do
if [[ ! $line = "#"* ]]; then
emerge --pretend $line
while read -p 'Please choose something:(1:package.use 2:package.license 3:package.keywords) ' input;
do
case $input in
1) echo "$input has been chosen."
#set up package.use
;;
...
esac
done
fi
done <$STEPS
可能重复:[阅读bash中输入一个while循环(http://stackoverflow.com/questions/6883363/read-input -in-的bash-内部-A-while循环)。 –
显然,这个线程与这个线程完全不同,因为我所要求的是一个嵌套的while循环,而且,我的情况并不是从文件或目录中读取的。我问的是在while循环中,还有另一个while循环用于接受用户的选项。 –
它仍然是同样的原因和相同的效果。不要紧,另一个问题没有嵌套的'while',重要的是它试图从已经被重定向的'read'循环中的用户'读'。该问题中发布的解决方案也适用于您的问题。 –