【问题标题】:bash run script from here doc [duplicate]bash 从这里 doc 运行脚本 [重复]
【发布时间】:2019-08-07 06:37:16
【问题描述】:

在下面的代码中,变量X是正常输出的。

# cat a.sh
X=world
echo 'hello' $X

# cat a.sh | bash
hello world

但是,使用 here doc,变量 X 不显示。

# cat <<EOF | bash
> X=world
> echo 'hello' $X
> EOF
hello

# bash -s <<EOF
> X=world
> echo 'hello' $X
> EOF
hello

是什么造成了这种差异?

【问题讨论】:

标签: bash heredoc


【解决方案1】:

您可以看到删除 |bash 后会发生什么

X=oldvalue
cat <<EOF 
X=world
echo "hello $X"
EOF

$X 在通过管道传输到 bash 之前被替换。
您可以检查以下内容

X=oldvalue
cat <<"EOF"
X=world
echo "hello $X"
EOF

这是你要执行的:

cat <<"EOF" | bash
X=world
echo "hello $X"
EOF

【讨论】:

    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 2019-06-24
    • 2017-11-04
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多