цикл для определения местоположения файла, пока файл не существует в 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]#
Я предполагаю, что это происходит из-за того, что цикл прерывается, и при печати выводятся все эхо, есть ли способ избежать этого и просто напечатать эхо, если введено неправильное местоположение файла?