可以简化以下测试条件

时间:2015-02-25 11:43:40

标签: linux unix testing

我有一个变量a,如果我回应它就会给我。

 lrwxrwxrwx 1 root root 23 May 16 2014 ggo -> /export/s1/home/ggo 

以下代码检查所有者或组是否为数字或根。如果所有者或组是数字或根,则它将打印目录的名称,在本例中为ggo。

if [[ $(echo $a|awk "{print \$3}") =~ ^[0-9]+$ ]] || [[ $(echo $a|awk "{print \$3}") == root ]] || [[ $(echo $a|awk "{print \$4}") =~ ^[0-9]+$ ]] || [[ $(echo $a|awk "{print \$4}") == root ]] ; then echo $(echo $a | awk "{print \$9}"); fi;

但它可以简化吗?

例如,不能缩小以下部分:

[[ $(echo $a|awk "{print \$3}") =~ ^[0-9]+$ ]] || [[ $(echo $a|awk "{print \$3}") == root ]]

1 个答案:

答案 0 :(得分:1)

虽然我同意你的问题的评论者,可能有更好的方法来做你想做的事情,用一个更简化的命令来解决这个问题,你可以将你的IF语句移动到awk:< / p>

echo $a | awk ' ($3 ~ /^[0-9]+$/ || $3=="root" || $4 ~ /^[0-9]+$/ || $4=="root") {print $9}'