gpt4 book ai didi

linux - 创建一个不解释任何内容的 heredoc

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:40 27 4
gpt4 key购买 nike

我正在为没有 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com