Você não precisa ler as linhas com for
. A maneira correta de fazer isso é usar while
com read
. O read
builtin pode analisar automaticamente os campos por linha se eles estiverem separados por espaço em branco (espaços e tabulações). A opção -r
garante que as barras invertidas não sejam interpretadas durante a leitura:
while read -r user password id; do
# strip the @domain part from username
user="${user%%@*}"
useradd "$user" -d "/home/$user" -m
echo "$user:$password" | chpasswd
# and so on
done < your_input_file
Observe também que você não deve usar variáveis em maiúsculas. $USER
já está reservado para seu nome de usuário.