цикл для определения местоположения файла, пока файл не существует в bash

Я создал эту функцию:

function promptFile()

{

while true;
    do
            read -p "Please provide a full path [q to quit]: " file
            if [ $file == q ]; then
                    echo "Exiting.."
                    return 1
            fi

            if [ ! -f $file ]; then
                    echo "File does not exist, please try again"

            else
                    echo $file
                    break
            fi
    done
}

Чтобы запросить у пользователя местоположение файла, снова спросите, не существует ли файл, и сохраните вывод в переменную, если она существует, вызывается функция:

tempLoc=$(promptFile)
if [ !tempLoc ]; then
        fileLocation=$tempLoc
fi

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

[root@tsting:0]# ./tst
Please provide a full path [q to quit]: tst1
Please provide a full path [q to quit]: tst2
Please provide a full path [q to quit]: tst3
Please provide a full path [q to quit]: tst4
Please provide a full path [q to quit]: q
File does not exist File does not exist File does not exist File does not exist Exiting..
[root@tsting:0]#

Я предполагаю, что это происходит из-за того, что цикл прерывается, и при печати выводятся все эхо, есть ли способ избежать этого и просто напечатать эхо, если введено неправильное местоположение файла?

Ответы на вопрос(2)

Ваш ответ на вопрос