2013-04-01 2 views
1

Предположим, что у меня есть формат файла, я хочу, чтобы сохранить резервные копии баз данных с учетом как таковой:вывода Перенаправление на имя файла, заданное по результату команды

echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql" 

Теперь, как я могу указать этот результат как имя файла для вывода в оболочке ?

mysqldump my_db > ....? 

Кстати: оболочка интерпретирует результат вложенного эхо-команды в качестве исполняемого файла команды /. Таким образом,

mysqldump my_db > $(echo "something") 

НЕ работает. Вместо этого оболочка ищет файл с именем something и пытается его выполнить

ответ

3

Нет необходимости использовать вложенное эхо. Вы можете этого избежать:

mysqldump my_db > ~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql 
0

$ (echo "something") не проблема, а ~ есть. Он отлично работает, если вы используете полный путь:

echo 'hello world' > $(echo "/home/root/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql") 

В случае, если вы заинтересованы в том, как использовать ~:

eval "echo 'hello world' > $(echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql")" 
+0

Не очень ... Баш редирект может обрабатывать '~'; нет необходимости конвертировать '~' в '/ home/root /'; если только он не управляется каким-либо другим пользователем или неинтерактивным способом ... – anishsane

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