Как установить функцию bash, содержащую переменные, используя скрипт bash? [Дубликат]
На этот вопрос уже есть ответ здесь:
Как избежать heredoc расширяющих переменных? [Дубликат] 2 ответаЯ пытаюсь создать скрипт bash, который позволит мне установить одну и ту же функцию bash на нескольких компьютерах. Эта конкретная функция создает копию файла с отметкой времени в каталоге резервного копирования:
filebackup () { cp "${@}" ~/"filebackup/${@}_$(date +%Y-%m-%d_%H:%M:%S).bk"; }
Вот мой скрипт bash:
cat <<EOT >> ~/.bashrc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# create a file backup in ~/filebackup/ with timestamp
filebackup () { cp "${@}" ~/"filebackup/${@}_$(date +%Y-%m-%d_%H:%M:%S).bk"; }
EOT
source ~/.bashrc
Однако когда я выполняю сценарий,${@}
отсутствуют и$(date +%Y-%m-%d_%H:%M:%S)
был оценен. Вот что было добавлено к.bashrc
файл:
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# create a file backup in ~/filebackup/ with timestamp
filebackup () { cp "" ~/"filebackup/_2017-01-05_12:07:56.bk"; }
Как я могу гарантировать, что функция скопирована буквально в файл?