如下所示,第一個循環的目標是從文本文件中讀取步驟,而第二個循環旨在根據用戶在屏幕上看到的內容接受來自用戶的選項,並執行某些操作,比如說配置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'循環中的用戶'讀'。該問題中發佈的解決方案也適用於您的問題。 –