首页 > 解决方案 > 有人可以帮我缩小这段代码吗?

问题描述

我需要上传这段代码,但是代码太大而且令人困惑,有人可以帮我总结一下这段代码还是让它变小一些?它只是有点令人困惑的输入部分。

input(){
while read line;
do
for name in $line;
do
if [ "$name" == "`cat /etc/passwd | cut -f1 -d: | grep  "^$name"`" ]
then
#echo $name----------
        if [[ $s -eq 0 && $l -eq 0 && $i -eq 0 && $I -eq 0 && $u -eq 0 ]]; then
      standard
fi
if [ $s -eq 1 ]
then
        keepSudoUser
fi
if [ $l -eq 1 ]
then
        interactiveShell
fi
if [ $i -eq 1 ]
then
        userUnder1000
fi
if [ $I -eq 1 ]
then
        userOver1000
fi
if [ $u -eq 1 ]
then
        excludeUser
fi
fi
NO=0
done
done
}
input

标签: linuxbash

解决方案


这更紧凑:

input() {
    while read -ra names; do
        for name in "${names[@]}"; do
            if grep -q "^${name}:" /etc/passwd; then
                [[ "$s$l$i$I$u" == "00000" ]] && standard
                (( s == 1 )) && keepSudoUser
                (( l == 1 )) && interactiveShell
                (( i == 1 )) && userUnder1000
                (( I == 1 )) && userOver1000
                (( u == 1 )) && excludeUser
            fi
            NO=0
        done
    done
}

input

更严格的翻译是

((s == 0 && l == 0 && i == 0 && I == 0 && u == 0)) && standard
# or
(( !(s || l || i || I || u) )) && standard

推荐阅读