base-files/functions.sh: use grep -q instead of []
authorRosen Penev <rosenp@gmail.com>
Fri, 17 Jan 2020 22:36:29 +0000 (14:36 -0800)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Fri, 17 Jan 2020 23:24:06 +0000 (00:24 +0100)
It's cleaner and faster as it does not need to do extra work.

Also removed $() to avoid executing the output. The shell can handle it.

https://github.com/koalaman/shellcheck/wiki/SC2143

Signed-off-by: Rosen Penev <rosenp@gmail.com>
[correct || to && for one conversion]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
package/base-files/files/lib/functions.sh

index 8e189e4f4df32a39db0dc2e47c4ec3830af402d9..d2edef1a346fe40d21b7c18fa597def37e8407a2 100755 (executable)
@@ -326,7 +326,7 @@ group_add_next() {
        fi
        gids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/group)
        gid=65536
-       while [ -n "$(echo "$gids" | grep "^$gid$")" ] ; do
+       while echo "$gids" | grep -q "^$gid$"; do
                gid=$((gid + 1))
        done
        group_add $1 $gid
@@ -336,8 +336,8 @@ group_add_next() {
 group_add_user() {
        local grp delim=","
        grp=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group)
-       [ -z "$(echo $grp | cut -d: -f4 | grep $2)" ] || return
-       [ -n "$(echo $grp | grep ":$")" ] && delim=""
+       echo "$grp" | cut -d: -f4 | grep -q $2 && return
+       echo "$grp" | grep -q ":$" && delim=""
        [ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd
        sed -i "s/$grp/$grp$delim$2/g" ${IPKG_INSTROOT}/etc/group
        [ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd
@@ -354,7 +354,7 @@ user_add() {
        [ -z "$uid" ] && {
                uids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/passwd)
                uid=65536
-               while [ -n "$(echo "$uids" | grep "^$uid$")" ] ; do
+               while echo "$uids" | grep -q "^$uid$"; do
                        uid=$((uid + 1))
                done
        }