Параметр не видит аргумент (то есть переменную) в 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' не существует

Я извлекаю данные из файла .csv, который расположен правильно.

Было бы здорово, если бы кто-нибудь мог помочь!

Спасибо!

1
задан 17 December 2018 в 03:49

2 ответа

Кажется, что Вы хотели присвоить результат 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"

Переменные, используемые в параметрах командной строки, должны обычно дважды заключаться в кавычки для предотвращения разделения слова.

4
ответ дан 3 December 2019 в 06:50

Заключительный код - это для любого, которому любопытно:

#!/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
0
ответ дан 3 December 2019 в 06:50

Другие вопросы по тегам:

Похожие вопросы: