评估 >2&1 时“-bash:1:找不到命令”

评估 >2&1 时“-bash:1:找不到命令”

cpp我正在尝试根据以下方式获取返回值如何反转 grep 返回的计数?。我的脚本失败并显示以下消息-bash: 1: command not found

这是简化的测试用例:

$ echo `cpp -dM -fsanitize=undefined < /dev/null > /dev/null >2&1`
-bash: 1: command not found

为什么 Bash 尝试1作为命令执行,如何清除错误?

答案1

正如 @steeldriver 指出的,问题是由于错误构造的 io 重定向造成的。原因如下:

    cpp  > 2   &   1

cpp 进程被置于后台,输出重定向到名为“2”的文件,& 符号也是像分号一样的命令分隔符,因此行中的下一个命令是“1”,shell 无法找到该命令。

相关内容