Bash:$?它应该为0时返回1

时间:2011-12-08 11:25:10

标签: bash

我有一行带有

行的bash脚本
klist | grep DHCPTEST.COM > /dev/null

我知道klist会返回带有DHCPTEST.COM的行,所以我知道grep应该返回true(0),当脚本从命令提示符运行$?确实会返回0。

但是,当从C程序(DHCPD)调用脚本时,该行返回False(即$?设置为1) - 为什么?

1 个答案:

答案 0 :(得分:1)

为避免任何混淆,拼出来:

grep -q DHCPTEST.COM <(klist)

很可能行为的任何差异都归因于

  • 调用了另一个shell(bash,dash,sh?)
  • 不同的子shell行为(管道通常会调用子shell。我个人必须查找返回的退出代码(klist中的一个或grep中的一个1}})

使用上述内容,您可以通过使用命令替换替换管道来避免可能的歧义