Переменные оболочки не работают?

Я пытаюсь сохранить дату в переменной ( $DATE ), поэтому я могу использовать ее позже, но она не работает. Что-нибудь не так?

 DATE=$(date +"%Y-%m-%d %R") sudo mysqldump -u root -pnotgivingyoumypassword --all-databases > ~/mysql_backups/$DATE.sql cd /var/www && sudo tar -czf ~/www_backups/$DATE.tar ./ 

Обновление Сообщение об ошибке:

get: tar: 20 \: 41.tar: не может stat: нет такого файла или каталога tar: выход из состояния отказа из-за предыдущих ошибок

Он, похоже, работает для дампа mysql, но он не работает при использовании его в последней команде.

Вам нужно процитировать ваше расширение $DATE , оно претерпевает перевод слов, и, таким образом, tar передается по два аргумента вместо одного, как только $DATE было расширено (и то же самое для перенаправления). Вот фиксированная версия (с переменным $DATE измененным на $date ; по соглашению только переменные среды должны быть в полном верхнем регистре):

 date=$(date +"%Y-%m-%d %R") sudo mysqldump -u root -pnotgivingyoumypassword --all-databases > ~/mysql_backups/"$date.sql" cd /var/www && sudo tar -czf ~/www_backups/"$date.tar" ./ 

См. http://mywiki.wooledge.org/Quotes .