测试字符串外壳中现有的子字符串

时间:2018-06-26 14:55:39

标签: shell

我有两个参数: linux用户组列表

groupsUsers=$(id -nG ${utilisateur})

所有用户linux组列表(linux组+应用程序)

list_all_groups=$(curl -u GET "${edge_admin_nodes}_${port_http}"/applications/lists)

我该如何测试groupsUsers是否存在于list_all_groups中,如果是“ no”,我将结果存储在变量中吗?

我做了这个解决方案,但是我不确定该解决方案。

for groupUser in ${groupsUsers}
do 
if echo "$list_all_groups" | grep -o "$groupUser" then

        echo "${groupUser}"


    then
        my_result=$( echo "$groups,$groupUser" )
         result="${groups},\"${groupUser}\""
fi
done

1 个答案:

答案 0 :(得分:2)

通常,我更喜欢正确的解析。但是,常见的解决方案是将定界符放在两个字符串之间,例如:

if echo ",$list_all_groups," | grep -q ",$groupUser," then

这会针对特定条目及其分隔符检查在原始列表中带有逗号的字符串(因此我们不必处理字符串的开头/结尾差异),这样我们就不会匹配foo的groupUser,在foobar的list_all_groups中有一个条目。