从文本文件创建用户组时出错

问题描述

我的脚本有问题:

#!/bin/bash
# El argumento tipo corresponde a usuario o grupo.
# El argumento accion corresponde a crear o eliminar cualquiera de los anteriores.
tipo=$1
accion=$2
if [ $tipo = "usuario" ]; then
    while IFS=,read -r nombre usuario grupo
    do
        if [ $accion = "crear" ]; then
            useradd "$usuario" -c "$nombre" -m -G "$grupo" 
        else
            sudo userdel "$usuario" -r -f
        fi
    done < /tmp/usuarios_fles.txt
    echo "----- Usuarios procesados ----"
    exit 0
else
    while IFS= read -r grupo
    do
        if [ $accion = "crear" ]; then
            groupadd "$grupo"
        else
            groupdel "$grupo" -f
        fi
    done < /tmp/grupos_fles.txt
    exit 0
    echo "----- Grupos procesados ----"
fi

文件

/tmp/groups_fles.txt

它只包含这些文本字符串:

adminuser
readwriteuser
readuser

它在 Suse 11.3 上给了我以下错误,我在 Fedora 33 上测试,它没有显示错误

'.oupadd: Invalid group name `adminuser
'.oupadd: Invalid group name `readwriteuser
'.oupadd: Invalid group name `readuser

我不知道还能做什么来让它运行

最好的问候...

弗兰克

解决方法

我是这样解决的:

#!/bin/bash

# El argumento tipo corresponde a usuario o grupo.
# El argumento accion corresponde a crear o eliminar cualquiera de los 
  anteriores.

tipo=$1
accion=$2
archivogrupo="/tmp/grupos.txt"
archivousuario="/tmp/usuarios_flex.txt"

if [ $tipo = "usuario" ]; then
    for linea in $(cat $archivousuario | tr " " _ | tr -d '\r')
    do
        nombre=`echo $linea|cut -d,-f1`
        usuario=`echo $linea|cut -d,-f2`
        grupo=`echo $linea|cut -d,-f3`

        if [ $accion = "crear" ]; then
            useradd $usuario -c $nombre -m -G $grupo
        else
            userdel $usuario -r -f
        fi
    done
        echo "----- Usuarios procesados ----"
    exit 0

elif [ $tipo = "grupo" ]; then
    for grupo in $(cat $archivogrupo)
    do
        if [ $accion = "crear" ]; then
            groupadd $grupo
        else
            groupdel $grupo
        fi
    done
    exit 0
    echo "----- Grupos procesados ----"
fi