[英]While loop to test if a file exists in bash script
我正在嘗試創建一個循環來提示用戶創建文件。 如果文件已經存在,它會一直提示用戶,直到用戶輸入一個不存在的文件。 但似乎無法讓它工作,有人可以幫忙嗎?
file3=/root/simulate/$filename
while true ; do
if [ ! -f "$file3" ]; then
read -p "Please enter a file name to create in simulate folder:" filename
touch /root/simulate/$filename
elif [ -f "$file3" ]; then
read -p "Please enter a different file name as $filename already exist:" filename
touch /root/simulate/$filename
break
else
touch /root/simulate/$filename
fi
done
文件名變量為空。
有兩種方式填寫文件名變量
文件名變量可以通過導出命令傳遞 shell 腳本。 ex) $export filename=newFile 如果您執行 shell 腳本,shell 正在分叉並執行新的 shell。 new shell 帶走了你母殼的環境變量
將文件名變量推送到 shell 腳本中。
注意:我選擇了第二種方式,並更改了 $file3 的路徑。
我修復了 elif 塊中的代碼,以再次詢問是否出現問題。
這是一個代碼。
#!/bin/bash
filename=newFile
file3="./$filename"
while true ; do
if [ ! -f "$file3" ]; then
read -p "Please enter a file name to create in simulate folder:" filename
touch ./$filename
break
elif [ -f "$file3" ]; then
while true ; do
read -p "Please enter a different file name as $filename already exist:" filename
if [ ! -f "$filename" ]; then
touch ./$filename
break 2
fi
done
else
touch ./$filename
fi
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.