2017-02-15 75 views
0
filename="" 
while [[ $filename = "" ]];do 
    echo "Enter the file name" 
    read filename 
    if [[ -f $filename ]];then 
     echo "$filename exists" 
    else 
     echo "File name doesn't exists, so re-enter" 
    fi 
done 

使用此樣式的循環,當文件名不存在時循環存在。 但我想循環繼續,直到用戶輸入文件名。 請建議我應該在上面的腳本中包含哪些額外的命令。雖然用於檢查文件名的循環是否存在

+0

歡迎SO的!你在用什麼外殼?你是否在腳本的頂部有「#!/ bin/bash」之類的「shebang」行? –

回答

0

Quick和使用相同代碼的方法是簡單地將代碼添加到無限循環中。

while : 
do 
    filename="" 
    while [[ $filename = "" ]];do 
     echo "Enter the file name" 
     read filename 
     if [[ -f $filename ]];then 
      echo "$filename exists" 
     else 
      echo "File name doesn't exists, so re-enter" 
     fi 
    done 
done 

請記住,除非給出完整路徑,否則這隻會查看執行程序的目錄。

1

使用break走出循環

while true ; do 
    echo "Enter the file name" 
    read filename 
    if [ -f "${filename}" ]; then 
     echo "${filename} exists" 
     break 
    else 
     echo "File name doesn't exists, so re-enter" 
    fi 
done 
echo "Thanks for ${filename}" 

或更短

while true ; do 
    read -p "Enter the file name: " filename 
    test -f "${filename}" && break 
    echo "File name doesn't exists, so re-enter" 
done 
echo "Thanks for ${filename}"