Puncte:0

eroare de comandă groupadd nu funcționează: „nu este un nume de grup valid”

drapel il

Am refăcut codul la ceva mai puțin complicat și acum spune:

ubuntu@ubuntu-VirtualBox:~$ ./newuseradd.sh Newbies.csv [sudo] parola pentru ubuntu: useradd: grupul „acct” nu există useradd: grupul „hr” nu există useradd: grupul „cumpărare” nu există

Scenariul:

 #!/bin/bash

 dacă [ $# -ne 1 ]; atunci
   echo „UTILIZARE: $0 FIȘIER”
    ieșirea 7
 fi

 sed -i'.bak' 's/Accounting/acct/;s/Purchasing/purch/;s/Human Resources/hr/;s/Information Technology/it/' $1 # Partea 3 - transformarea numelor de grup


 în timp ce linia de citire; do
    userinfo=($(echo $line | tr ',' ' '))
    firstinitial=$(echo „${informații utilizator[1]}” | cut -c1)
    username=$(echo ${firstinitial}${userinfo[0]} | tr A-Z a-z)
    echo useradd $nume utilizator -g ${informații utilizator[2]} -G angajat -c ${informații utilizator[3]} -m #Partea 2
    echo "$(data): $nume utilizator, ${informații utilizator[1]}, ${informații utilizator[0]}, $?" >> it-log.txt #Partea a 4-a atribuire - it log

    echo -n „${informații utilizator[0]}, ${informații utilizator[1]}” >> hr-log.txt
    grep „$nume utilizator” /etc/passwd | cut -d':' -f1,7,3 | tr ':' ',' >> hr-log.txt
terminat < $1 #part 1 assignment

Misiunea cu detalii

Soren A avatar
drapel mx
Cred că `groupadd` ia doar un singur argument groupname la momentul respectiv.
AnneBright avatar
drapel il
Mulțumesc, există o modalitate mai ușoară de a face asta atunci? Am urmărit o mulțime de videoclipuri și am citit ceva online, și așa ar putea părea scenariul meu cam frankstein...
bac0n avatar
drapel cn
@Steeldriver `${a[*]}` fără ghilimele nu se va extinde la separare prin virgulă (mai înalt va fi `${a[@]}` sub orice formă), dar `"${a[*]}"` va, deci va bucla: `IFS=,; a=(a b c); echo ${a[*]} "${a[*]}"`
drapel hr
@AnneBright OK, aparent, mă înșel - vă rog să ignorați comentariul meu anterior
bac0n avatar
drapel cn
@AnneBrigh: @Steeldriver are totuși dreptate, deoarece ați schimbat IFS în `,`, `${groups[*]}` nu se va împărți așa cum era de așteptat (`" \n\t"`), cred că puteți comenta `IFS ` deoarece nu este folosit cred. (secgroup= este atribuit ca o variabilă, dar adresat ca o matrice)
bac0n avatar
drapel cn
Există o mulțime de alte probleme, probabil că ar trebui să repetați diferitele „$variabile” pentru a vă asigura că analiza funcționează.
Puncte:1
drapel cn

În acest caz, cred că cel mai bine este să vă serializați datele într-o listă de pași (din 4).

#!/bin/bash

declare -Un grup passwd
declara -la a=()
în timp ce IFS="," citește -r b c d e; do
    a+=("$b" "$c" "$d" "$e"); a=(„${a[@]// }”)
facut < newbies.csv

pentru i în grupul passwd; do
    în timp ce IFS=: citiți -r j _ ; do
        eval ${i}\[\$j\]=1; terminat < /etc/$i
Terminat

priveşte în sus(){
    local a
    a=${1}[$2]; [[ ${!a} = 1 ]]
}

pentru ((y = 0, x = 0; y < ${#a[@]}; y += 4)); do
    citește -r \
        nume prenume departament uid \
    <<< „${a[@]:$y:4}”
    printf Procesare:\ %s\n \
    „$lastname $firstname $department $uid”

    grup de căutare \
    „$departament” || echo groupadd "$departament"

    cautare passwd \
    „$prenume” || { \
    echo useradd -n -c "Asigment4" -g "$departament" "$prenume" && ((x++)); }
Terminat
echo "Finalizat. $x conturi au fost create."

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.