首页 > 解决方案 > 在某个文本文件中执行 bash

问题描述

我想创建一个在文本文件中执行 bash 的模板系统。

例如,假设我们创建了一个简单的template.yaml文件:

my_path: $(echo ${PATH})
my_ip: $(curl -s http://whatismyip.akamai.com/)
some_const: "foo bar"
some_val: $(echo -n $MY_VAR | base64)

希望执行每一个,结果可能如下所示:

my_path: /Users/roman/foo
my_ip: 1.2.3.4
some_const: "foo bar"
some_val: ABC

我将如何进行这样的替换?


想要这个的原因:

我不赞成这种方法,并且很乐意尝试满足原因的建议。

标签: bash

解决方案


这可能有效,但您可以尝试:您可以创建一个脚本:script.sh它将一个参数作为.yaml文件,并将扩展该文件中的变量:

script.sh

    echo 'cat <<EOF' >  temp.sh
    cat "$1"         >> temp.sh
    echo 'EOF'       >> temp.sh
    bash temp.sh
    rm temp.sh

您可以从命令行调用脚本:./script.sh template.yaml


推荐阅读