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: " }}'
我正在尝试 运行 通过目录并确保根目录不是任何文件的所有者。使用 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: " }}'