【发布时间】:2017-05-20 08:12:52
【问题描述】:
我正在尝试创建一个 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"; }
如何确保函数被逐字复制到文件中?
【问题讨论】:
-
在第 1 行引用
"EOT"(但不在第 6 行)。 -
@thatotherguy 按下简易按钮。 这很容易!谢谢!
-
@DanFarrell 我觉得我在搜索类似问题时非常彻底......作为一个新用户,另一个问题中的术语不是我熟悉的,因此永远不会找到它!
-
没关系@AlexWillison,投票结束并不是反对票。然而,这个问题是重复的。
-
AlexWillison 完全可以。确实很难找到重复项,因为 google 和 stackoverflow 都不擅长搜索符号,而且您基本上必须知道找到重复问题的答案是什么:P
标签: bash function variables scripting backup