bash将管道中的值返回bash

时间:2017-02-13 14:38:32

标签: bash pipe

我们有一个脚本,带有返回码。例如

#!/bin/bash
exit 42

这很好用:

$ ./script ; echo $?
42

但如果我去:

$ bash << EOF
./script ; echo $?
EOF
0

所以它打印0,而人们会期望它仍然打印42

1 个答案:

答案 0 :(得分:6)

在执行脚本之前,您的$?正在展开。如果您不希望变量在heredoc(不是管道)中展开,请在名称周围加上单引号:

bash <<'EOF'
./script; echo $?
EOF

在将字符串传递给新的$?命令时,会阻止bash扩展。相反,它将在字符串中进行评估,这就是您的目标。