Это возможно с подстановкой команд .
DATEVAR=$(date +%s)
Я работаю над сценарием bash, который создает резервную копию файла конфигурации перед копированием в новый файл.
Вот как выглядит мой фрагмент:
mv ~/myStuff.conf ~/myStuff.conf.bak cp ~/new/myStuff.conf ~/myStuff.conf
Каждый раз, когда запускается этот скрипт, я бы хотел, чтобы в резервной копии была метка времени unix в имени файла. Я пробовал это
DATEVAR=date +%s mv ~/myStuff.conf ~/myStuff.conf.$DATEVAR.bak
Но это не работает, так как функция date не выполняется, и bash видит ее как строку, а полученный файл
myStuff.conf.date+%s.bak
Любые идеи о том, как получить результаты функции даты в переменную?
--[[z4us|binz--]] export datevar=`date` # date embedded in backquotes --[[z4us|binz--]] echo $datevar Lun 25 Gen 2016 15:56:14 CET
Это не отвечает переменной, содержащей выходные данные команды. Это уже ответил. Что касается остальной части вашего примера скрипта;
Немного более короткая версия:
mv ~/myStuff.conf ~/myStuff.conf.$(date +%s)
Нет необходимости устанавливать переменную для чего-то, что вам нужно или используется только один раз. Кроме того, чтобы быть совместимым с большим количеством оболочек, вы также можете использовать этот синтаксис:
mv ~/myStuff.conf ~/myStuff.conf.`date +%s`
Мне просто кажется, что использование метки даты в качестве расширения устраняет необходимость в дополнительном .bak в имени файла.