簡體   English   中英

While循環測試bash腳本中是否存在文件

[英]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        

文件名變量為空。

有兩種方式填寫文件名變量

  1. 文件名變量可以通過導出命令傳遞 shell 腳本。 ex) $export filename=newFile 如果您執行 shell 腳本,shell 正在分叉並執行新的 shell。 new shell 帶走了你母殼的環境變量

  2. 將文件名變量推送到 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM