2017-02-15 4 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 

с этим стилем цикла, цикл существует, когда имя файла отсутствует. Но я хочу, чтобы цикл продолжался, пока пользователь не вводит имя файла. Просьба указать, какую дополнительную команду я должен включить в приведенный выше сценарий.while цикл для проверки имени файла существует или нет

+0

Добро пожаловать на ТАК! Какую оболочку вы используете? у вас есть строка «shebang», например '#!/bin/bash' или аналогично в верхней части скрипта? –

ответ

0

Quick и dirty способ сделать это, используя тот же самый код, который у вас есть, просто добавляет ваш код в бесконечный цикл.

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}" 
Смежные вопросы