На этот вопрос уже есть ответ здесь:
#!/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, который расположен правильно.
Было бы здорово, если бы кто-нибудь мог помочь!
Спасибо!
Кажется, что Вы хотели присвоить результат 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"
Переменные, используемые в параметрах командной строки, должны обычно дважды заключаться в кавычки для предотвращения разделения слова.
Заключительный код - это для любого, которому любопытно:
#!/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