[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problem w skrypcie bash/sed/awk.



On Thu, 2009-03-12 at 10:01 +0100, Rafał Radecki wrote:
> Witam wszystkich. Jako początkujący twórca skryptów natrafiłem na
> problem. Tworzę skrypt tworzący konta na podstawie pliku /etc/passwd z
> innego hosta. Teoretycznie chciałem umieścić wszystkie odpowiednie ($5
> ~ /WZÓR$/)linijki wspomnianego /etc/passwd w zmiennej SUSERS:
> SUSERS=`awk -F: '$5 ~ /WZÓR$/{print}' ./passwd`
> Następnie za pomocą pętli for chciałem dla każdej linijki (wpisu ze
> starego /etc/passwd) otrzymywać odpowiednie wartości pól i dodawać
> nowego użytkownika:
> for $i in $SUSERS

Tak na marginesie - 'for i in$USERS', jeśli już. Nie "$i".

>         do
[...]
>         done
> 
> Niestety zmienna SUSERS zawiera jedną linijkę składającą się ze
> wszystkich linii starego /etc/passwd oddzielonych spacjami 

Bo wybrałeś złą metodę.
Jeśli używasz ``, dostaniesz cały wynik działania komendy.
W tym wypadku powinieneś użyć raczej konstrukcji:
awk -F ... | while read i; do
  [...]
done 

-- 
d'`'`'`'`'`'`'`'`'`'`'`'`'Yb I'm  forgetting what you said and not chang-
`b  Kruk@epsilon.eu.org   d' ing anything.(TeX)
d' http://epsilon.eu.org/ Yb 
`b,-,.,-,.,-,.,-,.,-,.,-,.d' 


Reply to: