Мой сервер использует CentOS 5.5 (это почти Red Hat Linux).Использование переменной оболочки внутри команды
Я хочу создать резервную копию набора изображений в файлы с отметкой времени. Этот код будет работать:
z_cmd1=$(tar cvzf /home/user1/public_ftp/misc/pics_20100925_142230.tar.gz /home/user1/public_html/misc/_pics_var/F???????.jpg)
echo "tar output =[${z_cmd1}]"
, но я, конечно, хочу, штамп времени, чтобы быть автоматическим.
Следующий код не работает. Так или иначе, третья строка (та, у которой есть tar) терпит неудачу. «tar» что-то делает, но он не создает никаких файлов в ожидаемой папке назначения. Зачем?
z_fname=$(date +"/home/user1/public_ftp/misc/pics_%Y%m%d_%H%M%S.tar.gz")
echo "File name =[${z_fname}]"
z_cmd1=$(tar cvzf ${z_fname} /home/user1/public_html/misc/_pics_var/F???????.jpg)
echo "tar output =[${z_cmd1}]"
Спасибо.
У вас установлен флаг 'v' erbose, что он говорит? 'set -xv' часто помогает при отладке сценариев оболочки. – msw
Вы говорите, что «tar' что-то делает. Что оно делает? Какие сообщения об ошибках вы получаете? Что выводится при echo '$ {z_cmd1}'? Несмотря на то, что в этом случае это не представляется необходимым, рекомендуется указывать переменные, содержащие имена файлов. –
Код «работает» для меня - имя выходного файла генерируется правдоподобно, а затем «tar» терпит неудачу, потому что у меня нет каталога '/ home' на моей машине, не говоря уже о каталогах под ним. Почему вы записываете выходные данные «tar»? Почему бы просто не позволить этому запустить? И вы, возможно, захотите также зафиксировать ошибки. –