путь к файлу в переменной с пользовательского ввода

Я пытаюсь создать скрипт, где пользователь даст путь к некоторому файлу, а скрипт проверяет, существует ли файл и что-то делать … Я написал этот код:

read -p "Enter path: " $path #check if path is not empty string if [ -z $path ] then echo "path is empty string" exit fi #check if file exist if [ ! -f $path ] then echo "file doesnt exists" fi 

моя проблема заключается в условии secound – если я изменяю $path с некоторой строкой, все в порядке, но когда я ввожу путь через переменную, всегда «файл не существует», я пытался с

 if [ ! -f `$path` ] 

но если файл не имеет результата разрешения на выполнение, тоже сбой. Может кто-нибудь помочь мне исправить код выше? 🙂

EDIT извините, я имел в виду -z и -f не double -z условие

One Solution collect form web for “путь к файлу в переменной с пользовательского ввода”

Проблема здесь в том, что обратные сигналы:

 `command` 

используются для запуска команды и замены ее выходных потоков (стандарт и ошибка) в результате, поэтому тест терпит неудачу, когда вы поставляете файл без разрешения на выполнение.

Как исправить это

использование

 if [ -f "$path" ] 

Двойные кавычки предназначены для защиты от разбиения слов (в случае, если они содержат пробелы), и против globbing (в случае, если путь содержит подстановочные символы, такие как * или ? )

Еще лучше, поскольку путь может быть в каталоге, просто проверьте наличие пути с -e :

 if [ -e "$path" ] 
  • bash: предупреждение: уровень оболочки (1000) слишком высокий, сброс до 1
  • Как перейти в каждый каталог и выполнить команду по определенному файлу?
  • Как сгруппировать команды для обработки с помощью функции обертки
  • Как `ls` знает, является ли он канальным или печатным
  • Multi заявление, если условие в bash
  • Кодовые буквы в виде цифр
  • В чем смысл этого тестового выражения
  • Bash: нажатие 4 раза
  • Удаление многоразовых расширений в хроме
  • «ожидать» поведение в сценарии bash
  • Пример для $ "..."
  • Как я могу убедиться, что я запускаю обновленную версию bash?
  • Linux и Unix - лучшая ОС в мире.