选项在 bash 中没有看到参数(即变量),请帮忙?

选项在 bash 中没有看到参数(即变量),请帮忙?
#!/bin/bash

counter=2

while [ $counter -lt 19 ]
do



        username= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f1 
        psswd= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f2 
        full_name= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f3 
        group= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f4 
        second_group= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f5 

        sudo useradd $username -m -g $group -s /bin/bash -c $full_name

        if [ second_group = LPGestionnaires ]
        then 
                usermod -a -G $second_group $user
        fi

        #echo "$username:$psswd" | chpasswd

        ((counter++))
done
echo Execution complete

它所说的部分sudo useradd $username -m -g $group -s /bin/bash -c $full_name是不起作用的部分,我的 -g 选项没有将变量 $group 参数视为参数,当我执行脚本时它返回以下内容:useradd: group '-s' does not exist

我正在从位置正确的 .csv 文件中提取数据。

如果有人能帮忙那就太好了!

谢谢!

答案1

似乎您想将head ...命令的结果分配给此处的变量username

username= head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f1 

这是不正确的语法。请按如下方式更正:

username=$(head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f1)

然后对其他变量也执行相同的操作,它们都有同样的问题。

另外,sudo useradd像这样更改命令:

sudo useradd "$username" -m -g "$group" -s /bin/bash -c "$full_name"

命令行参数中使用的变量通常应该用双引号引起来,以避免分词。

答案2

对于那些好奇的人来说,最终的代码是这样的:

#!/bin/bash

counter=2

while [ $counter -lt 19 ]
do



        username=$(head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f1)
        psswd=$(head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f2)
        full_name=$(head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f3)
        group=$(head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f4)
        second_group=$(head -n $counter ./user_sheet.csv | tail -n 1 | cut -d ';' -f5)

        sudo useradd "$username" -m -g "$group" -s /bin/bash -c "$full_name"

        if [ "$second_group" = LPGestionnaires ]
        then 
                sudo usermod -a -G LPGestionnaires "$username"
        fi

        echo "$username:$psswd" | sudo chpasswd

        ((counter++))
done
echo Execution complete

相关内容