[英]How to read input inside a while loop while reading from a file?
我對bash腳本非常陌生,這是我想要做的事情:
1-讀取文件-該文件是名稱列表2-詢問用戶是否要刪除{name} 3-如果用戶輸入y,請繼續
到目前為止,這是我的腳本:
while IFS= read -r repo
do
read -p "Do you want to delete $repo" ip
echo $ip
if [ "$ip" == "y" ]
then
#do something
fi
done < "$filename"
read -p
行不等待用戶提示。 我有點理解問題的所在/位置,並且正在嘗試通過閱讀以下鏈接來解決問題-https: //bash.cyberciti.biz/guide/Reads_from_the_file_descriptor_(fd)
但是不知何故我無法解決此問題。 我究竟做錯了什么? 請幫忙!
為命名文件使用其他文件描述符。 您知道數據來自何處; 您不知道標准輸入可能從何處重定向,因此請不要理會。
while IFS= read -r -u 3 repo # Read from file descriptor 3
do
read -p "Do you want to delete $repo" ip # Read from whatever standard input happens to be
echo "$ip"
if [ "$ip" = "y" ]
then
#do something
fi
done 3< "$filename" # Supply $filename on file descriptor 3
-u
是特定於bash
,但是我注意到您已經在使用另一個bash
特定的功能, -p
選項為read
。 從標准輸入以外的其他內容讀取的POSIX方法是IFS= read -r repo <&3
(表示將文件描述符3復制到此命令的標准輸入中)。
看到這個問題:
本質上,您是通過標准輸入讀取文件的,該輸入與您鍵入時的輸入流相同,因此,在提示用戶時,腳本會將文件的輸入視為用戶的輸入。 如果您改為在另一個輸入流上讀入文件,則不會覆蓋該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.