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

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

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 условие

  • Что делает «:>» здесь?
  • синтаксическая ошибка: неожиданный конец файла
  • Преобразование строки строки строки с датой в эпоху
  • clean script, чтобы рекурсивно заменить строку во всех каталогах и именах файлов
  • Как сохранить строку «*» в переменной в unix / bash?
  • Параметры dd-стиля для сценария bash
  • добавление пути к файлу в файлы
  • Как сделать «если переменная a имеет шаблон« abc »do x, иначе y» (в 1 строке)
  • One Solution collect form web for “путь к файлу в переменной с пользовательского ввода”

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

     `command` 

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

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

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

     if [ -f "$path" ] 

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

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

     if [ -e "$path" ] 
    Interesting Posts

    Как перечислить доступные алгоритмы ключа хоста для клиента SSH?

    Настройка пользователя для программы

    Запуск 64-битной виртуальной Linux на любом чипе AMD / Intel без поддержки VT-X

    Случайно набрал crontab только с тире

    Каковы блокировки «root», «home» и «swap» и как их удалить?

    Настроить ориентацию и разрешение дисплея на встроенном Linux

    Процесс начинается с inittab, но одновременно останавливается

    Диагностика узкого места rsync

    Каков наилучший способ передать аргумент / параметр командной строки, который будет использоваться в скрипте?

    В XFCE, как настроить анимированный GIF в качестве фона рабочего стола?

    Сценарий для перемещения одного типа файлов и создания подпапки, если он существует?

    В чем разница между командой pbrun и sudo?

    команда ifconfig, отображающая внутренний IP-адрес

    Как загрузить .bashrc из "bash -c"

    Суммировать все значения в столбце с определенным заголовком

    Linux и Unix - лучшая ОС в мире.