在下面的代码中,变量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
是什么导致了这种不同?
答案 0 :(得分:0)
您可以看到删除|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