我想检查输出到另一个命令的grep
命令的输出。在我之前的question中,PIPESTATUS已经被提出,但是现在我发现它并不适用于所有条件。无论grep
(匹配还是不匹配)的输出是什么,PIPESTATUS
都会返回0,这很奇怪。检查管道grep的输出
脚本中包含
GF=`grep g09 $INP | cut -d ' ' -f2`
if [ ${PIPESTATUS[0]} = 1 ]; then
基本上,对于在输入文件g09
第一命令搜索。如果它不存在,PIPESTATUS应该是1
。
现在在bash脚本起诉set -x
,我看到,它包含G09的输入文件,输出为0,对不具有G09在它的输入,输出仍为0
++ grep g09 tor.sh
++ cut -d ' ' -f2
+ GF=hashe.gjf
+ '[' 0 = 1 ']'
和
++ grep g09 tor.sh
++ cut -d ' ' -f2
+ GF=
+ '[' 0 = 1 ']'
为什么?我该如何解决这个问题?除PIPESTATUS之外是否还有其他解决方案?
请粘贴完整的代码。 – codeforester
正如您在'set -x'的输出中看到的那样,它是一个输入文件'tor.sh'。在两个不同的目录中有两个'tor.sh'。完整的代码可能很大,但我会更新帖子 – mahmood
反引号在单独的进程中运行您的命令,这就是为什么环境变量不再可用于您的调用脚本。 –