Score:0

ข้อผิดพลาดคำสั่ง groupadd ไม่ทำงาน: 'ไม่ใช่ชื่อกลุ่มที่ถูกต้อง'

ธง il

ฉันทำโค้ดใหม่อีกครั้งเพื่อให้ซับซ้อนน้อยลง และตอนนี้มันบอกว่า:

ubuntu@ubuntu-VirtualBox:~$ ./newuseradd.sh Newbies.csv [sudo] รหัสผ่านสำหรับอูบุนตู: useradd: ไม่มีกลุ่ม 'บัญชี' useradd: ไม่มีกลุ่ม 'hr' useradd: ไม่มีกลุ่ม 'ซื้อ'

สคริปต์:

 #!/bin/bash

 ถ้า [ $# -ne 1 ]; แล้ว
   echo "การใช้งาน: $0 ไฟล์"
    ทางออก 7
 ไฟ

 sed -i'.bak' 's/Accounting/acct/;s/Purchasing/purch/;s/Human Resources/hr/;s/Information Technology/it/' $1 # ตอนที่ 3 - การเปลี่ยนชื่อกลุ่ม


 ขณะอ่านบรรทัด ทำ
    userinfo=($(echo $line | tr ',' ' '))
    firstinitial=$(echo "${userinfo[1]}" | ตัด -c1)
    username=$(echo ${firstinitial}${userinfo[0]} | tr A-Z a-z)
    echo useradd $ชื่อผู้ใช้ -g ${userinfo[2]} -G พนักงาน -c ${userinfo[3]} -m #ตอนที่ 2
    echo "$(วันที่): $username, ${userinfo[1]}, ${userinfo[0]}, $?" >> it-log.txt # ส่วนที่ 4 การมอบหมาย - มันเข้าสู่ระบบ

    echo -n "${userinfo[0]}, ${userinfo[1]}" >> hr-log.txt
    grep "ชื่อผู้ใช้ $" /etc/passwd | ตัด -d':' -f1,7,3 | tr ':' ',' >> hr-log.txt
เสร็จ < $1 #งานส่วนที่ 1

มอบหมายพร้อมรายละเอียด

Soren A avatar
mx flag
ฉันคิดว่า `groupadd` รับอาร์กิวเมนต์ชื่อกลุ่มเพียงรายการเดียวในตอนนั้น
AnneBright avatar
il flag
ขอบคุณ มีวิธีอื่นที่ง่ายกว่านี้ไหม ฉันได้ดูวิดีโอจำนวนมากและอ่านหนังสือออนไลน์ และนี่คือลักษณะสคริปต์ของฉันที่อาจดูเหมือนแฟรงก์สไตน์เล็กน้อย...
bac0n avatar
cn flag
@Steeldriver ที่ไม่มีเครื่องหมายคำพูด `${a[*]}` จะไม่ขยายเป็นเครื่องหมายจุลภาคคั่น (ไม่ว่าจะ `${a[@]}` ในรูปแบบใดก็ตาม) แต่ `"${a[*]}"` จะ ดังนั้นมันจะวนซ้ำ: `IFS=,; ก=(กขค); echo ${a[*]} "${a[*]}"`
hr flag
@AnneBright เห็นได้ชัดว่าฉันผิด - โปรดอย่าสนใจความคิดเห็นก่อนหน้าของฉัน
bac0n avatar
cn flag
@AnneBrigh: @Steeldriver ยังคงถูกต้อง เพราะคุณเปลี่ยน IFS เป็น `,`, `${groups[*]}` จะไม่แยกตามที่คาดไว้ (`" \n\t"`) คิดว่าคุณสามารถแสดงความคิดเห็น `IFS ` เพราะมันไม่ได้ใช้ฉันเชื่อ (secgroup= กำหนดเป็นตัวแปรแต่กำหนดเป็นอาร์เรย์)
bac0n avatar
cn flag
มีปัญหาอื่น ๆ อีกมากมาย คุณควรสะท้อน "ตัวแปร $" ที่แตกต่างกันเพื่อให้แน่ใจว่าการแยกวิเคราะห์ใช้งานได้
Score:1
ธง cn

ในกรณีนี้ ฉันคิดว่าเป็นการดีที่สุดที่จะทำให้ข้อมูลของคุณเป็นอนุกรมใน Stride List (จาก 4 รายการ)

#!/bin/bash

ประกาศ - กลุ่ม passwd
ประกาศ -la a=()
ในขณะที่ IFS="," อ่าน -r bcde; ทำ
    a+=("$b" "$c" "$d" "$e"); a=("${a[@]// }")
เสร็จแล้ว < newbies.csv

สำหรับฉันในกลุ่ม passwd; ทำ
    ในขณะที่ IFS=: read -r j _ ; ทำ
        เท่ากับ ${i}\[\$j\]=1; เสร็จแล้ว < /etc/$i
เสร็จแล้ว

ค้นหา () {
    ท้องถิ่น
    ก=${1}[$2]; [[ ${!a} = 1 ]]
}

สำหรับ ((y = 0, x = 0; y < ${#a[@]}; y += 4)); ทำ
    อ่าน -r \
        นามสกุล ชื่อแผนก uid \
    <<< "${a[@]:$y:4}"
    กำลังประมวลผล printf:\ %s\n \
    "$นามสกุล $ชื่อแรก $แผนก $uid"

    กลุ่มค้นหา \
    "$แผนก" || echo groupadd "$ แผนก"

    ค้นหารหัสผ่าน wd \
    "$ชื่อแรก" || { \
    echo useradd -n -c "Assigment4" -g "$department" "$firstname" && ((x++)); }
เสร็จแล้ว
echo "เสร็จสมบูรณ์ สร้าง $x บัญชีแล้ว"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา