#!/bin/bash -x
export groupCommand="groupadd -g"
export userCommand="useradd -u %s -g %s -G %s %s"
function userIdInfoParser() {
local dataToList=($1)
local dataListSize=${#dataToList[@]}
local charSeparatedBy="$2"
local fieldSeparatedBy="$3"
local purgeChars="$4"
local groupAdds=()
declare -A useradd
for(( i=0; i<dataListSize; i++ )) {
case ${dataToList[$i]%%$fieldSeparatedBy*} in
ui*)
dataField=${dataToList[$i]##*$fieldSeparatedBy}
dataFields=(${dataField//[$purgeChars]/ })
useradd['uid']=${dataFields[0]}
useradd['username']=${dataFields[1]}
;;
gi*)
dataField=${dataToList[$i]##*$fieldSeparatedBy}
dataFields=(${dataField//[$purgeChars]/ })
useradd['principalGroup']=${dataFields[1]}
groupAdds[${#groupAdds[@]}]="$groupCommand ${dataFields[0]} ${dataFields[1]};"
;;
gr*)
groupField=${dataToList[$i]##*$fieldSeparatedBy}
for dataField in ${groupField//$charSeparatedBy/ }; do
dataFields=(${dataField//[$purgeChars]/ })
useradd['secondaryGroup']+="${dataFields[1]},"
groupAdds[${#groupAdds[@]}]="$groupCommand ${dataFields[0]} ${dataFields[1]};"
done
;;
esac;
}
echo ${groupAdds[@]}
#printf "$userCommand \n" ${useradd[@]} What? Was?
printf "$userCommand \n" ${useradd['uid']} ${useradd['principalGroup']} ${useradd['secondaryGroup']%,} ${useradd['username']}
}
userIdInfoParser "$1" "$2" "$3" "$4"
```
f13@auth:~/workspace$ ./usuariosGrupos.sh "$(id f13)" "," "=" "()"
```
groupadd -g 1000 f13; groupadd -g 1000 f13; groupadd -g 4 adm; groupadd -g 24 cdrom; groupadd -g 27 sudo; groupadd -g 30 dip; groupadd -g 46 plugdev; groupadd
-g 116 lpadmin; groupadd -g 126 sambashare;
useradd -u 1000 -g f13 -G f13,adm,cdrom,sudo,dip,plugdev,lpadmin,sambashare f13
```