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: