作者:小牛 | 来源:互联网 | 2023-02-12 07:44
我们有一个脚本,带有返回码.例如
#!/bin/bash
exit 42
哪个工作正常:
$ ./script ; echo $?
42
但如果我去:
$ bash <
所以它打印0,而人们会期望它仍然打印42
1> Eric Renouf..:
$?
在执行脚本之前,您正在扩展.如果您不希望变量在heredoc
(不是管道)中展开,请在名称周围放置单引号:
bash <<'EOF'
./script; echo $?
EOF
这会阻止$?
在将字符串传递给新bash
命令时进行扩展.相反,它将在字符串中进行评估,这就是您的目标.