如何在Shell中用逗号分隔将用户组列表输出为单行?
Shell用户组列表逗号分隔单行输出方法
你原有脚本的问题是echo命令默认会在输出末尾追加换行符,同时每输出一个组就加一个逗号会导致末尾多一个多余逗号,可以用以下几种方法实现需求:
方案1:最短实现(直接替换空格)
groups输出的用户组默认以空格分隔,直接用tr命令替换空格为逗号即可:
groups | tr ' ' ','
方案2:修改原有循环逻辑
如果需要保留循环写法,可以先拼接字符串再去除末尾逗号:
res="" for group in $(groups) do res="$res$group," done # 去除末尾多余的逗号后输出 echo "${res%,}"
方案3:awk自动处理分隔符
用awk设置输出分隔符为逗号,自动避免末尾多余逗号问题:
groups | awk '{$1=$1}1' OFS=','
内容的提问来源于stack exchange,提问作者OtO
相关产品推荐
相关产品推荐

