Вопрос по shell - tcsh

vada

Новичок
Вопрос по shell - tcsh

Ухостера по умолчанию оболочка tcsh
Решил сделать автоархивацию на сайте. Со «статичными» именами файлов в tar’e crontab работает нормально. А вот такая конструкция:
[задаю_время] tar -czf $HOME/path_to_arc_dir /`date +%d`.tar.gz $HOME/path_to_dir
будучи заданной в кронтабе – не работает, будучи заданной в командной строке - работает, но при этом ругается tar: Removing leading `/' from member names (признаться, смысл этой фразы из отдельных слов у меня так и не сложился)

В результате экспериментов обнаружил, что конструкция, задаваемая в командной строке
var=`date +%d`; echo $var
вызывает ругательство:
var=06: Команда не найдена.
var: Неопределенная переменная.

Если же я меняю оболочку на sh – предыдущая команда нормально работает. Это что получается - в tcsh не работает оператор присваивания? Или у него синтаксис другой?

Собственно, вопрос: где я неправ и как сделать чтоб работало. И/или дайте, плиз, ссылку на какие-нить книжки/статьи по tcsh (кроме MAN’a :) ), все найденное в инете описывает работу с sh.
 

voodoo

Новичок
tcsh:
set var=`date +%d` ; echo $var

Но, наверное, лучше сделать скриптик и указать вверху #!/bin/sh
чтобы быть уверенным кто будет выполнять
 

tony2001

TeaM PHPClub
>Removing leading `/' from member names (признаться, смысл этой фразы из отдельных слов у меня так и не сложился)
это не ругательство, это notice.
сделай:
Код:
tar -czf $HOME/path_to_arc_dir /`date +%d`.tar.gz $HOME/path_to_dir 1>/dev/null 2>&1
и весь вывод будет идти в /dev/null
 

vada

Новичок
voodoo:
спасибо, похоже, то, что нужно. счас опробую:)


tony2001:
понял, спасибо, учту:)
 

csa

Guest
лучше tar --absolute-paths -czf ....
1>/dev/null 2>&1 похерит все сообщения об ошибках
 

vada

Новичок
В общем, проблема решена, спасибо откликнувшимся. Пишу на случай, если кому будет интересно. Может, кто-то пожелает откомментировать.

В командной строке конструкция
set var1=`date +%d`; tar -czf $HOME/path_to_arc_dir/$var1.tar.gz $HOME/ path_to_dir
работает, выдавая нотисы:)
добавляю
1>/dev/null 2>&1 - не работает и ругается «неоднозначное перенаправление вывода»

Помещаю в кронтаб – не работает (с перенаправлением и без)

В итоге, задача решается только с помощью скриптов, вызываемых из кронтаба.
либо
#!/bin/sh
var1=`date +%d`
tar -czf $HOME/path_to_arc_dir/$var1.tar.gz $HOME/ path_to_dir 1>/dev/null 2>&1

либо короче
#!/bin/sh
tar -czf $HOME/ path_to_arc_dir /`date +%d`.tar.gz $HOME/ path_to_dir 1>/dev/null 2>&1

либо через текущий tcsh (без #!/…)
tar -czf $HOME/ path_to_arc_dir /`date +%d`.tar.gz $HOME/ path_to_dir 1>/dev/null 2>&1
а вот вариант с set var здесь не работает: (var пустая, создается файл .tar.gz)

с вызовом tcsh:
#!/usr/local/bin/tcsh
tar -czf $HOME/ path_to_arc_dir /`date +%d`.tar.gz $HOME/ path_to_dir
работает, но выдает нотис. Дописываю 1>/dev/null 2>&1 - не работает и ругается «неоднозначное перенаправление вывода». С tar --absolute-paths –czf … то же самое, как и с set var=`…

В общем, поэкспериментировал, есть из чего выбрать:) Нотисы в данной ситуации не напрягают:) Правда, непонятно поведение 1>/dev/null 2>&1
 
Сверху