синтаксическая ошибка: неожиданный конец файла

синтаксическая ошибка: неожиданный конец файла
#!/bin/sh
if [ -e $1 ] ; then 
mv $1 $1_$(date +%Y%m%d%H%M) 
fi
exit 0

Мне нужно найти файл и если файл существует, то переименовать его и выйти из программы, нам нужно переименовывать только если файл существует

получаю указанную выше ошибку

решение1

Вообще говоря, переменные bash всегда следует заключать в двойные кавычки.

Например, пусть $1 — это My File.txt. Ваш скрипт пытается сделать это:

mv My File.txt My File.txt_201501010101

что mvозначает, что вы хотите переместить файлы My, File.txt, и Myвсе вместе в место назначения File.txt_201501010101.

Вместо этого вам нужно следующее:

mv "My File.txt" "My File.txt_201501010101"

Более подробную информацию и другие подводные камни, которых следует избегать, смотрите ниже: http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target

PS exit 0в конце скрипта излишен. Если скрипт завершается без ошибок, то статус выхода неявно равен 0.

Связанный контент