[英]Silent while loop in bash
我正在尋找創建一個 bash 腳本,該腳本不斷檢查目錄中的文件並對其執行某些操作。 我正在使用 while 循環,如果文件不存在,我希望 while 循環保持不變並繼續檢查條件。 這是我創建的內容,但如果文件不存在,它會不斷拋出找不到文件的錯誤。
while [ ! -f /home/master/applications/tmp/mydata.txt ]
do
cat mydata.txt;
rm mydata.txt;
sleep 1; done
您的實現中有兩個問題:
[ ! -f $file ]
[ ! -f $file ]
以及您的 cat 和 rm 命令。 cat
命令正在當前工作目錄 ( pwd
) 中查找文件,而您的 while 語句可能正在其他地方查找,因此,您的實現有問題,如果您的pwd
不是/home/master/applications/tmp
,則無法按預期工作/home/master/applications/tmp
.
嘗試這個:
file="/home/master/applications/tmp/mydata.txt"
while [ ! -f "$file" ]
do
sleep 1
done
cat $file
rm $file
編輯
根據@Ivan 的建議,您可以使用直到而不是while
因為它更適合您的要求。
file="/home/master/applications/tmp/mydata.txt"
until [ -f "$file" ]; do sleep 1; done
cat $file
rm $file
做出與 abhiarora 不同的假設,我猜您可能希望該文件重新出現,並且您希望每次都顯示它。
file=/home/master/applications/tmp/mydata.txt
while :
do if [[ -f "$file" ]]
then echo "$(<"$file")"
rm "$file"
fi
sleep 1
done
這將創建一個無限循環。 如果這不是您想要的,請使用 abhiarora 的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.