1) Wrzuć może treść skryptu w tag CODE, żeby było cokolwiek widać.
2)
> ma obiekcje do dwóch poniższych linijek:
> if [ $(cat /etc/passwd | grep $1)
]I słusznie, bo to nie jest warunek logiczny.
Możesz albo liczyć linie:
if [ $( cat /etc/passwd | grep $1 | wc -l ) -ge 1 ]; then
albo, sprawdzić, czy "grep" zakończył się bez błędu, co oznacza, że dopasował choć jedną linię. Ale wtedy ani bez polecenia "test" (czyli "[ ]"), ani bez "$()", które pobiera wyjście procesu:
if ( cat /etc/passwd | grep $1 ); then
Poza tym takie grepowanie pliku /etc/passwd nie jest jednoznaczne. Użyj wyrażenia regularnego ("grep -e"), aby mieć pewność, że sprawdzasz nazwę użytkownika, a nie dowolny ciąg znaków w linii (bo może np. dopasować opis użytkownika).
> for line in $(last $1 | awk {print $6 "." $5}|head –n $length)
Jeśli chcesz czytać linie, to raczej w ten sposób:
while read line; do
[...] # coś tam z użyciem $line
done < <( last $1 | awk {print $6 "." $5} | head -n $length )
Nie sprawdzałem reszty skryptu. Pokombinuj z tym co napisałem, a jak coś, to pisz.
PS. Nie używaj tych cudzysłowów: „ i ” i dziwnego myślnika –. Są taki ładne standardowe znaki " i -
![Smiley :)](http://forum.linux.pl/Smileys/default/smiley.gif)