[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Como fazer?
From: |
Eliphas Levy Theodoro |
Subject: |
Re: [shell-script] Como fazer? |
Date: |
Fri, 14 Jan 2005 19:04:26 -0200 (BRST) |
Olá,
Ao invés do 'for' use o while read, trocando o separador padrão do
shell (espaço e tab) para os dois pontos:
#!/bin/sh
OLDIFS="$IFS"
IFS=:
while read login nome; do
useradd $login -g mail -s /sbin/nologin "$nome"
done < /tmp/base.txt
IFS="$OLDIFS"
Fiz o "backup" do IFS e restaurei depois, porque seu script pode
utilizar o IFS padrão em algum outro lugar, mas se ele só fizer isso não
precisa desses passos.
Com o 'for', vc teria que pegar a linha toda e pegar os campos dentro
do loop:
#!/bin/sh
for linha in `cat /tmp/base.txt`; do
login=`echo "$linha" | cut -d: -f1`
nome=`echo "$linha" | cut -d: -f2`
useradd $login -g mail -s /sbin/nologin "$nome"
done
--
Eliphas
André Luiz, @ 16:09:
> Seguinte, criei um arquivo chamado base.txt ele está nesse formato.
>
> fulano:Fulano da Silva
> ciclano:Ciclano da Silva
> beltrano:Beltrano da Silva
>
> Isso aí que eu to fazendo é pra automatizar um script para criar todos
> usuários de um servidor automaticamente.
>
> to fazendo o seguinte script:
>
> #!/bin/sh
> for i in `cat /tmp/base.txt |cut -d: -f1`;do
> pw useradd $i -g mail -s /sbin/nologin
> done
>
> bom até aí tudo certo, o problema é que eu queria nesse mesmo script jah
> definir também o nome completo do cidadão, então teria que fazer um for pra
> pegar também o nome do cara, ele faria isso:
> pw useradd fulano -g mail -s /sbin/nologin -c Fulano da Silva
>
> o que acontece é que eu naum to conseguindo fazer isso, pois só to
> conseguindo pegar 1 dos dois...
[As partes desta mensagem que não continham texto foram removidas]