我试图整理我的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