在下面的代码中,变量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
X=oldvalue
cat <<EOF
X=world
echo "hello $X"
EOF
The $X
在通过管道传输到 bash 之前被替换。
您可以检查以下内容
X=oldvalue
cat <<"EOF"
X=world
echo "hello $X"
EOF
这就是你想要执行的:
cat <<"EOF" | bash
X=world
echo "hello $X"
EOF
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)