function initGroups
{
IFS_ORG=$IFS
INFO="Informacja z pliku /etc/group"
index=0
cat /etc/group | \
while read row
do
IFS=":"
set -A tab $row
IFS=$IFS_ORG
INFO[$index].name=${tab[0]}
INFO[$index].id=${tab[2]}
print -n "$index. "
print "id=${INFO[$index].id}, name=${INFO[$index].name}"
((index++))
done
print "init size=${#INFO[*]}"
}
function printGroups
{
size=${#INFO}
print "size is $size"
for ((index=0; index < size; index++))
do
print -n "$index. "
print "id=${INFO[$index].id}, name=${INFO[$index].name}"
done
}
initGroups
printGroups
Jeśli teraz odpalę program funkcja printGroups wypisze mi długość INFO ale łańcucha a nie wielkość tablicy struktur. Pętla w printGroups wypisuje jak należy ale podana wielkość tablicy nie odpowiada jej właściwej wielkości, wiec funkcja nie przechodzi przez wszystkie elementy.
Arch Linux
kernel current
Samsung RF711
HP Compaq nx7400 [EY508ES]
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
initGroups() {
index=0
INFO=( )
while IFS=: read name ignore id rest; do
INFO[$index].name=$name
INFO[$index].id=$id
index=$(( !index + 1 ))
done </etc/group
}
printGroups() {
index=0
while [ $index -lt ${#INFO[@]} ]; do
printf '%2d: %4d %s\n' $index ${INFO[$index].id} ${INFO[$index].name}
index=$(( $index + 1 ))
done
}
initGroups
printGroups
Nie miałem możliwości przetestować, gdyż nie używam ksh, ale chyba będzie działać. Pozwoliłem sobie przerobić trochę kod, żeby ładniej wyglądał.
Ostatnio zmieniony 2008-02-24, 00:20 przez mina86, łącznie zmieniany 1 raz.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.