shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]