有人可以解释为什么通过 STDIN 传递 bash 脚本数据会导致脚本中的命令无法运行吗?
脚本:
#!/bin/bash
ausearch -i -a 1221217
如果我运行以下命令,它会按预期输出 ausearch 结果:
./au.sh
但是,如果我这样做:
echo "blah" | ./au.sh
然后它输出:
<no matches>
两种执行方法应该返回相同的结果(因为 ausearch 是硬编码的),但 stdin 似乎破坏了它。
我不是询问如何在 bash 脚本中读取 stdin 数据。
最佳答案
如果 stdin 是管道,则
ausearch
会更改其行为。如果是,它将通过标准输入而不是通过审核守护程序日志进行搜索。您可以使用 --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/