有人能解释为什么通过stdin传递bash脚本数据会导致脚本中的命令不起作用吗?
脚本:
#!/bin/bash
ausearch -i -a 1221217
如果我运行以下命令,它将按预期输出ausearch结果:
./au.sh
但是,如果我这样做:
echo "blah" | ./au.sh
然后输出:
<no matches>
两个执行方法都应该返回相同的结果(因为ausearch是硬编码的),但是stdin似乎破坏了它。
我不是问如何在bash脚本中读取stdin数据。
最佳答案
ausearch
如果stdin是管道,则更改其行为。如果是,它将搜索stdin而不是审计守护进程日志。您可以使用--input-logs
强制它从日志中读取。
echo "blah" | ausearch -i -a 1221217 --input-logs
重定向stdin也会达到同样的目的。
#!/bin/bash
ausearch -i -a 1221217 < /dev/null
关于linux - 在stdin上通过管道传输数据时,调用ausearch的脚本的行为有所不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54426839/