使用替换变量但不使用反引号替换将文本写入bash脚本中的文件

时间:2018-09-19 12:26:04

标签: bash

我试图整理我的bash脚本,以利用变量仅定义一次重复的事情。

我在使用bash脚本创建其他bash脚本以便以后执行的过程中遇到了一个问题。

具体来说,我想避免在运行父脚本时执行反引号(以便仅在运行子脚本时才执行反引号)。但是我也想利用变量替换,以便可以多次使用单个定义。

我目前正在做的事情大致如下:

GLOBAL="yellow"
BASE="script"
APPS="foo bar"

for APP_NAME in $APPS; do
cat << EOF > ./"$BASE-$APP_NAME"
#!/bin/bash
mkdir ./app--$APP_NAME--$GLOBAL--`date +%Y%m%d_%H%M%S`
# do some other stuff
EOF
chmod +x ./"$BASE-$APP_NAME"
done

运行上述命令时,将根据需要执行变量替换,但是在运行父脚本时,回引日期会扩大。

我知道我可以使用"EOF"来保留反引号:

...
cat << "EOF" > ./"$BASE-$APP_NAME"
...

但是然后不执行变量替换!我该怎么做,以免替换变量 和反引号?

我希望生成的script-foo脚本看起来像:

#!/bin/bash
mkdir ./app--foo--yellow--`date +%Y%m%d_%H%M%S`
# do some other stuff

0 个答案:

没有答案