簡體   English   中英

創建一個不解釋任何內容的heredoc

[英]Create a heredoc that doesn't interpret anything

我正在為一個不熟悉bash的朋友編寫腳本。 該腳本生成一個備份腳本,生成一個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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM