AWK 字符串条件不起作用

AWK string conditional not working

我正在尝试 运行 通过目录并确保根目录不是任何文件的所有者。使用 awk,我遇到了一个问题,即比较一个字段和一个字符串不会产生准确的结果。

ls -d -l /path/to/file/**/* | awk '{ if ( "" == "root" ); print "File has wrong permissions: " ;}'

生成的是一个文件列表,仔细检查后,其所有者和组都不是root。

-rw-rw-r-- 1 foobar foobar 78828 Dec 4 11:15 /p/t/f/xyz/abc.jpg

理想情况下,最终结果应该是这样的:

ls -d -l /path/to/file/**/* | awk '{ if ("" != "deploy" || "" != "deploy") [...]

怎么了?

谢谢。

您不想将 </code> 放在引号中。如果你这样做,它就会变成一个字符串。此外,您不希望 <code>if 条件后有分号 - 如果有分号,那么 if 什么都不做。您可能想要进行这两项更改:

ls -d -l /path/to/file/**/* | awk '{ if (  == "root" ) print "File has wrong permissions: " ;}'

您语句中的问题是 if 条件之后的 ;。这意味着 if 块是空的。
删除 ; 或更好地将 if 块放在 {...} 中,一切都会按您预期的那样工作。此外,您不应将字段放在 "..." ("" -> </code>)</p> 中 <pre><code>ls -d -l / | awk '{ if ( == "root" ) print "File has wrong permissions: ";}'

ls -d -l / | awk '{ if (  == "root" ){print "File has wrong permissions: " }}'