如何使用bash脚本安装包含变量的bash函数? [英] How to install a bash function containing variables using a bash script?

查看:66
本文介绍了如何使用bash脚本安装包含变量的bash函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个bash脚本,该脚本将允许我在多台计算机上安装相同的bash函数.此特定功能在备份目录中创建带有时间戳的文件副本:

I am attempting to create a bash script that will allow me to install the same bash function across multiple machines. This particular function creates a copy of a file with a timestamp in a backup directory:

filebackup () { cp "${@}" ~/"filebackup/${@}_$(date +%Y-%m-%d_%H:%M:%S).bk"; }

这是我的bash脚本:

Here is my bash script:

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文件的内容:

When I execute the script, however, the ${@} are missing and the $(date +%Y-%m-%d_%H:%M:%S) has been evaluated. Here is what has been appended to the .bashrc file:

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# create a file backup in ~/filebackup/ with timestamp
filebackup () { cp "" ~/"filebackup/_2017-01-05_12:07:56.bk"; }

如何确保将函数原样复制到文件中?

How can I ensure that the function is copied literally into the file?

推荐答案

此处的文档被视为双引号字符串,因此在从命令读取参数扩展和命令替代之前先对其进行评估.引用定界符的任何部分,以将此处文档视为单引号字符串.

A here document is treated as a double-quoted string, so parameter expansions and command substitutions are evaluated before the command reads from them. Quote any part of the delimiter to have the here document treated as a single-quoted string.

cat <<\EOT >> ~/.bashrc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# create a file backup in ~/filebackup/ with timestamp
filebackup () { cp "${@}" ~/"filebackup/${@}_$(date +%Y-%m-%d_%H:%M:%S).bk"; }
EOT

从任何方面来说,我的意思是以下任何一项都将同样有效:

By any part, I mean any of the following would work just as well:

  • 'EOT'
  • E\OT
  • "E"OT
  • 'EOT'
  • E\OT
  • "E"OT

等等.

这篇关于如何使用bash脚本安装包含变量的bash函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆