Как установить функцию 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"; }

Как я могу гарантировать, что функция скопирована буквально в файл?

Ответы на вопрос(2)

Ваш ответ на вопрос