2016-03-17 2 views
0

Этот вопрос может показаться глупым, но я в тупике, не уверен, что не так. В любом случае, у меня есть часть кода, которая проверяет, существует ли конкретный файл в каталоге или нет. Код работает нормально для обычных файлов, по нормальным файлам, я имею в виду .. что-то вроде «abc.xlsx или xaga1.xlsx». Проблема в том, что когда я передаю файл с пробелами, он, похоже, терпит неудачу, я имею в виду, что проверка завершилась неудачно. Я пойду прямо к коду:Проверьте, существует ли файл в оболочке в определенном каталоге

if [ ! -e "$file" ] 
then 
    echo_time "ERROR: $file does not exist - aborting" >> $fileChangedLog 
    exit 1 
fi 

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

[03/17/16 11:07:09] ERROR: "/opt/just4share/tellabs/tellabs_nodes 2.xlsx" does not exist - aborting 

но если я Ls путь ошибки я получаю следующий результат:

[[email protected] scripts]$ ls -lrt "/opt/just4share/tellabs/tellabs_nodes 2.xlsx" 
-rw-rw-r--+ 1 netcool ncoadmin 17412 Mar 17 10:43 /opt/just4share/tellabs/tellabs_nodes 2.xlsx 

Это подтверждает, что файл существует, однако, мой код не может найти его. Что я здесь делаю неправильно? : |

Edit: Я также попытался -f переключатель вместо переключателя -e

+0

Похоже, что ваш файл '$ file' переменная содержит двойные кавычки, так что искали файл' "/ опц ...' не '/ opt ...' (сообщение журнала ясно об этом) .Как создается переменная '$ file'? –

ответ

-1

Ну, я понял проблему, я был добавление двойной кавычки в пути переменной файла $, пытаясь заключить путь в двойные кавычки, удаление двойных кавычек сделало трюк.

Старый код:

file="\"$directory/$file\"" 

Новый код:

file="$directory/$file" 
+0

Нигде в этом вопросе вы не показываете этот код, это буквально бесполезно для всех, кроме вас. – 123

+0

@ 123 Это было частью другого сценария, однако я поставил эту часть решения, учитывая тот факт, что он быть более интуитивным, чем я, просто ставя «решенный». –

Смежные вопросы