bash从这里运行脚本doc [duplicate]

问题描述 投票:0回答:1

这个问题在这里已有答案:

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

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

# cat a.sh | bash
hello world

但是,使用此处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个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.