我尝试组合两个bash文件来创建动态配置文件。其中一个文件(settings.sh)包含变量,另一个(config.sh)命令在它们上执行。
例如,在settings.sh中我有
DATABASE='name_of_the_db'
USER='name_of_the_user'
和config.sh包含
. settings.sh
[...]
'NAME': '$DATABASE',
'USER': '$USER',
[...]
我努力创建一个命令,在第一个文件中获取变量并将其插入第二个文件中,渲染一个包含
的新文件(settings.py)'NAME': 'name_of_the_db',
'USER': 'name_of_the_user',
我尝试了像
这样的命令cat< settings.py [...] EOF
这里提出How does ` cat << EOF` work in bash?,但这显然不会执行任何变量替换。
提前谢谢!
答案 0 :(得分:1)
我会做什么:
settings.sh
没问题
config.sh
:
. settings.sh
cat<<EOF
[...]
'NAME': "$DATABASE",
'USER': "$USER",
[...]
EOF
创建config.py
文件:
chmod +x config.sh
./config.sh > config.py
config.sh
中的双引号是必需,如果您希望插值变量。见http://mywiki.wooledge.org/BashGuide/Practices#Quoting