- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为没有 bash 经验的 friend 编写脚本。该脚本生成一个备份脚本,生成一个 crontab 并运行 crontab 以创建一个 cron 作业。
我想为这些备份添加日期,因此当前脚本(相关的)是:
cat <<EOF > ~/scheduledBackups/scripts/finalCutScript.bash
mkdir -p ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
cp -r $BACKUP_DIR/* ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
EOF
但是,这会生成 finalCutScript.bash
,其中包含运行“安装程序”脚本时的日期。
有没有办法将 heredoc 准确地放置在 finalCutScript.bash
中?我想将所有内容都保存在一个脚本中,以便以后可以使用这个脚本框架。
预期行为:
我希望 heredoc 通过管道传输到的文件包含
mkdir -p ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
cp -r $BACKUP_DIR/* ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
实际行为
该heredoc生成的文件包含
mkdir -p ~/scheduledBackups/FinalCut-Fri-Aug-05-2016_16
cp -r ~/Documents//* ~/scheduledBackups/FinalCut-Fri-Aug-05-2016_16
最佳答案
您应该在 heredoc 中使用 EOF
并使用 $(...)
进行命令替换:
cat <<-'EOF' >~/scheduledBackups/scripts/finalCutScript.bash
mkdir -p ~/scheduledBackups/FinalCut-$(date +%a-%b-%d-%Y_%H)
cp -r $BACKUP_DIR/* ~/scheduledBackups/FinalCut-$(date +%a-%b-%d-%Y_%H)
EOF
更新:根据下面 OP 的评论,您还可以转义 $
以不在当前 shell 中扩展变量:
BACKUP_DIR='foobar' # variable to be used below in here-doc
cat <<-EOF >~/scheduledBackups/scripts/finalCutScript.bash
mkdir -p ~/scheduledBackups/FinalCut-\$(date +%a-%b-%d-%Y_%H)
cp -r $BACKUP_DIR/* ~/scheduledBackups/FinalCut-\$(date +%a-%b-%d-%Y_%H)
EOF
以上命令将使用您当前环境中的$BACKUP_DIR
,但会添加文字$(date +%a-%b-%d-%Y_%H)
输出。
关于linux - 创建一个不解释任何内容的 heredoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38796968/
我在 php 脚本中有类似的东西: > $logFile > $logFile > $logFile > test.log > test.log <
我需要在没有任何格式的网页上显示 bash 脚本。 bash 脚本使用标准的“此处文档”块。当我尝试使用 PHP heredoc 函数输出脚本时,它会在遇到 ' #!/bin/sh rm /tmp/b
这个问题在这里已经有了答案: Does Java have support for multiline strings? (44 个答案) 关闭 7 年前。 对于 JAVA 开发,我需要写入带有“\
我知道这里有很多关于 heredocs 以及重定向和文件描述符的帖子,但我似乎找不到与我想做的事情相关的任何内容。 我想打开一个文件描述符到一个文件,然后将 heredoc 写入该文件描述符。 这是我
我刚刚开始阅读 O'Reilly 关于 PHP、MySQL 和 JavaScript 的书,并且刚刚进入学习 heredocs 的阶段。它在书中说他们按字面意思保留文本,但我的根本没有。我什至完全按照
使用下面的代码,我希望看到显示 5 个单独的行。相反,它将所有内容都放在一行上......没有制表符,没有前导空格,没有空行。出乎我的意料。 查看其他代码后,程序员插入了一系列我尝试过的 's(使用
在这里,我试图在 bash 中声明一个具有多行值的变量: $ GET="$(cat GET / HTTP/1.1 > Host: 127.0.0.1:80 > > EOF > )" 这肯定有效,但是
对于我从事的个人发展和项目,我们使用四个空格而不是制表符。但是,我需要使用 heredoc,而且我不能在不破坏缩进流的情况下这样做。 我能想到的唯一可行的方法是: usage() { cat
我正在尝试将一个数组元素传递给 heredoc,目标是生成一个文件,例如: declare -a box=("element1" "element2" "element3") cat > test.t
我正在为没有 bash 经验的 friend 编写脚本。该脚本生成一个备份脚本,生成一个 crontab 并运行 crontab 以创建一个 cron 作业。 我想为这些备份添加日期,因此当前脚本(相
这里有人可以探索使用 heredoc 的复杂性吗?在 PHP 中使用示例 PHP 代码片段,基于手册下面的内容? php.net 手册说: It is very important to note t
这个问题在这里已经有了答案: Why do these Heredoc and Nowdoc cause errors? (6 个答案) 关闭 7 年前。 我正在使用 Heredoc 将非常大的 H
我正在为 Controller 方法编写代码,我需要用它来发送电子邮件。我正在尝试使用 heredoc 语法来填写电子邮件正文,但是,似乎无法识别结束标记。 $this->email = new Em
我正在尝试用 heredoc 语句替换 HTML 代码。但是,我在最后一行收到解析错误。我确信我没有在 heredoc 结束标记行上留下任何前导空格或缩进。以下是代码的一部分: $table =
我想使用 irb 和一个 HTML 页面做一些正则表达式测试,我正试图 gsub 一些东西。 然而,我们都知道和喜爱的 HEREDOC 语法在 Ruby 中似乎有所不同: irb(main):140:
我喜欢 HEREDOC 语法,例如对于不值得放入模板的生成 HTML 的边缘情况。 不过,唯一让我恼火的是内容和 heredoc 字符串的结束标记紧贴第一列。这搞砸了嵌套代码布局: class myc
这个不起眼的终端功能在紧要关头提供一个文本编辑器。 在 Linux 和 Unix 的 shell 中有一个不为人知的功能,它能让你用 cat 命令打开一个 do-w
代码示例: create_data_with( first: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", secon
假设我在我的类中有一个名为 $_staticVar 的静态变量,我正试图像这样访问它。该变量有一个成员 aString,它的字符串值为 "my static variable" echo Th
$js = <<
我是一名优秀的程序员,十分优秀!