On Thu, Mar 12, 2009 at 07:05:38PM +0100, bartek szurgot wrote: >>> #!/bin/bash >>> cat /etc/passwd | \ >>> while read line >>> do >>> C_USRNAME="`awk -F: '{print $1}' <<< "$line"`" >>> C_UID="` awk -F: '{print $3}' <<< "$line"`" >>> C_HOMEDIR="`awk -F: '{print $6}' <<< "$line"`" >>> C_LSHELL="` awk -F: '{print $7}' <<< "$line"`" >>> C_COMMENT="`awk -F: '{print $5}' <<< "$line"`" >>> #C_PASSWORD=`egrep "^$C_USRNAME" /etc/shadow | cut -d: -f2` >>> echo useradd -u "$C_UID" -m -d "$C_HOMEDIR" -s "$C_SHELL" -c >>> "$C_COMMENT" -p "$C_PASSWORD" $C_USRNAME >>> done >>> exit 0 >> >> 1. Martwy kot. Właściwiej byłoby: >> while read line; do >> [...] >> done < /etc/passwd > mozna i tak.
Martwy kot jest niepotrzebnym mnożeniem procesów i dlatego jest "błędem stylistycznym" ;-> >> 2. Jakoś wcześniej to zupełnie zignorowałem - bez sensu tu jeszcze awka >> wrzucać. Trzeba po prostu IFS odpowiedni ustawić i dać readowi zrobić co >> trzeba. > tez na poczatq o tym myslalem - problem bedzie, jak pojawia Ci sie > spacje w linii (awk "zlapie" jak trzeba, ale read juz nie). napisz > dokladnie jakie Ty to widisz, bo moze nie myslimy o tym samym. No jak awk nie złapie? Dlatego właśnie piszę o ustawieniu IFS. ~$ IFS=: ~$ head /etc/passwd | while read MY_LOGIN MY_PASS MY_UID MY_GID MY_COMMENT MY_HOME MY_SHELL; do echo $MY_LOGIN; done root daemon bin sys sync games man lp mail news >> Źle stosuj'esz apostrof'y. > ciesze sie, iz mimo wszystko udalo Ci sie rozczytac. ;) Staram się ;-> A poważnie - to popularny ostatnio błąd. Apostrofu używa się do tego: http://so.pwn.pl/zasady.php?id=629619 -- [------------------------] The page just created is more than 18 feet [ k...@epsilon.eu.org ] tall or more than 18 feet wide, so I suspect [ http://epsilon.eu.org/ ] something went wrong.(TeX) [------------------------] -- To UNSUBSCRIBE, email to debian-user-polish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org