Điểm:0

lỗi lệnh groupadd không hoạt động: 'không phải là tên nhóm hợp lệ'

lá cờ il

Tôi đã làm lại mã thành một cái gì đó ít phức tạp hơn và bây giờ nó nói:

ubuntu@ubuntu-VirtualBox:~$ ./newuseradd.sh Newbies.csv [sudo] mật khẩu cho Ubuntu: useradd: nhóm 'acct' không tồn tại useradd: nhóm 'hr' không tồn tại useradd: nhóm 'mua hàng' không tồn tại

Kịch bản:

 #!/bin/bash

 nếu [ $# -ne 1 ]; sau đó
   echo "SỬ DỤNG: TỆP $0"
    thoát 7
 fi

 sed -i'.bak' 's/Accounting/acct/;s/Purchasing/purch/;s/Human Resources/hr/;s/Information Technology/it/' $1 # Phần 3 - chuyển đổi tên nhóm


 trong khi đọc dòng; làm
    userinfo=($(echo $line | tr ',' ' '))
    firstinitial=$(echo "${userinfo[1]}" | cut -c1)
    tên người dùng=$(echo ${firstinitial}${userinfo[0]} | tr A-Z a-z)
    echo useradd $username -g ${userinfo[2]} -G employee -c ${userinfo[3]} -m #Phần 2
    echo "$(date): $username, ${userinfo[1]}, ${userinfo[0]}, $?" >> it-log.txt #Part 4 assigment- it log

    echo -n "${userinfo[0]}, ${userinfo[1]}" >> hr-log.txt
    grep "$username" /etc/passwd | cắt -d':' -f1,7,3 | tr ':' ',' >> hr-log.txt
hoàn thành < $1 #phân công phần 1

Assigment với các chi tiết

Soren A avatar
lá cờ mx
Tôi nghĩ rằng `groupadd` chỉ nhận một đối số tên nhóm vào thời điểm đó.
AnneBright avatar
lá cờ il
Cảm ơn bạn, có cách nào dễ dàng hơn để tôi làm điều này không? Tôi đã xem rất nhiều video và đọc một số bài trực tuyến, và đây là cách mà kịch bản của tôi có vẻ hơi thẳng thắn...
bac0n avatar
lá cờ cn
@Steeldriver unquoted `${a[*]}` sẽ không mở rộng thành phân tách bằng dấu phẩy (neighter sẽ `${a[@]}` dưới mọi hình thức), nhưng `"${a[*]}"` sẽ, vì vậy nó sẽ lặp lại: `IFS=,; a=(a bc); tiếng vang ${a[*]} "${a[*]}"`
lá cờ hr
@AnneBright OK rõ ràng là tôi sai - vui lòng bỏ qua nhận xét trước đó của tôi
bac0n avatar
lá cờ cn
@AnneBrigh: @Steeldriver vẫn đúng vì bạn đã thay đổi IFS thành `,`, `${groups[*]}` sẽ không phân tách như mong đợi (`" \n\t"`), bạn nghĩ rằng bạn có thể nhận xét `IFS ` vì tôi tin rằng nó không được sử dụng. (secgroup= được gán dưới dạng một biến nhưng được xử lý dưới dạng một mảng)
bac0n avatar
lá cờ cn
có rất nhiều vấn đề khác, có lẽ bạn nên lặp lại các "biến $" khác nhau để đảm bảo việc phân tích cú pháp hoạt động.
Điểm:1
lá cờ cn

Trong trường hợp này, tôi nghĩ tốt nhất là tuần tự hóa dữ liệu của bạn trong danh sách bước (trong số 4).

#!/bin/bash

khai báo -Một nhóm passwd
khai báo -la a=()
trong khi IFS="," đọc -r b c d e; làm
    a+=("$b" "$c" "$d" "$e"); a=("${a[@]// }")
hoàn thành < newbies.csv

cho tôi trong nhóm passwd; làm
    trong khi IFS=: đọc -r j _ ; làm
        eval ${i}\[\$j\]=1; xong < /etc/$i
xong

tra cứu(){
    địa phương một
    a=${1}[$2]; [[ ${!a} = 1 ]]
}

for ((y = 0, x = 0; y < ${#a[@]}; y += 4)); làm
    đọc -r \
        họ tên bộ phận uid \
    <<< "${a[@]:$y:4}"
    printf Đang xử lý:\ %s\n \
    "$lastname $firstname $department $uid"

    nhóm tra cứu \
    "$ bộ phận" || echo groupadd "$department"

    tra cứu mật khẩu \
    "$firstname" || { \
    echo useradd -n -c "Assigment4" -g "$department" "$firstname" && ((x++)); }
xong
echo "Hoàn tất. Tài khoản $x đã được tạo."

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.