我正在尝试使用 system() 在 awk 中执行 grep ,根据手册应该返回正在运行的命令的退出代码。
$ cat foo.txt
bar
$ grep -q bar foo.txt; echo $?
0
$ awk 'BEGIN{ if ( system( "grep -q bar foo.txt" ) ) { print "yes" } else { print "no" } }'
no
Run Code Online (Sandbox Code Playgroud)
如果我删除-q
我可以看到 grep 确实找到了bar
所以它应该退出 0 并因此打印是,否?
$ awk 'BEGIN{ if ( system( "grep bar foo.txt" ) ) { print "yes" } else { print "no" } }'
bar
no
Run Code Online (Sandbox Code Playgroud)
grep
从等式中完全去除:
$ awk 'BEGIN{ if ( system( "true" ) ) { print "yes" } else { print "no" } }'
no
Run Code Online (Sandbox Code Playgroud)
Rud*_*diC 12
在 shell 中,退出代码 0 代表命令成功,其他任何代表失败(及其原因)。这就是system
返回: 0 表示成功,但awk
将其解释为 FALSE。你需要颠倒逻辑。
归档时间: |
|
查看次数: |
637 次 |
最近记录: |