【问题标题】:BASH script to pass variables without substitution into new scriptBASH 脚本传递变量而不替换到新脚本中
【发布时间】:2011-09-25 23:49:30
【问题描述】:

作为系统构建脚本的一部分,我有一个创建各种文件和配置的脚本。

但是,构建脚本的一部分会创建一个新脚本,其中包含我不想在构建脚本运行时解析的变量。代码 sn -p 示例

cat - > /etc/profile.d/mymotd.sh <<EOF
hostname=`uname -n`
echo -e "Hostname is $hostname"
EOF

我尝试了 ' 和 " 和 ( 和 [ 的各种组合,但如果不替换值并将替换项放在新脚本而不是原始文本中,我无法让脚本发送内容。

想法?

【问题讨论】:

    标签: bash substitution


    【解决方案1】:

    假设您不想在此处的文档中替换任何内容,最简单的方法是将 EOF 标记放在引号中,如下所示:

    cat - > /etc/profile.d/mymotd.sh <<'EOF'
    hostname=`uname -n`
    echo -e "Hostname is $hostname"
    EOF
    

    【讨论】:

      【解决方案2】:

      最简单的就是逃避$

      echo -e "主机名是\$hostname"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 2011-04-26
        • 1970-01-01
        相关资源
        最近更新 更多