能否简化以下测试条件
Can the following test conditon be simplified
我有一个变量 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 ]]
虽然我同意评论者对你的问题的看法,即总体上可能有更好的方法来做你想做的事情,但要用一个更简化的命令解决这个问题,你可以将你的 IF 语句移到 awk 中:
echo $a | awk ' ( ~ /^[0-9]+$/ || =="root" || ~ /^[0-9]+$/ || =="root") {print }'
我有一个变量 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 ]]
虽然我同意评论者对你的问题的看法,即总体上可能有更好的方法来做你想做的事情,但要用一个更简化的命令解决这个问题,你可以将你的 IF 语句移到 awk 中:
echo $a | awk ' ( ~ /^[0-9]+$/ || =="root" || ~ /^[0-9]+$/ || =="root") {print }'