Portál AbcLinuxu, 25. dubna 2024 11:32
who | cut -d" " -f1
vypíše všechny uživatele. Prvního uživatele by aspoň na mém systému vypsalo who | head -n1 | cut -d" " -f1Toho bych do proměné dostal jednoduše
foo=$(who | head -n1 | cut -d" " -f1)Pokud už v příslušném scriptu máte zpracované parametry, nebo vás nezajímají, tak elegantní cesta je taky pomocí
set
. Vyzkoušejte:set $(who) while [ -n "$1" ] do echo $1 shift donenebo pro vypsání všech uživatelů jen jednou (a malou variaci na test konce)
set $(who | cut -d" " -f1 | sort | uniq) while : do echo $1 shift || break done
man bash
Fakt je to dobré čtení na dlouhé zimní večery, ale už jste to propásl, protože se blíží jaro
users=($(who | cut -d' ' -f1 | sort -u))read:
who | cut -d' ' -f1 | sort -u | \ while read user; do echo "$user" donePokud chceš ekvivalent
users=$(who | cut -d' ' -f1)tak je lepší si přečíst who(1) a použít -q:
users=$(who -q | head -n1)
users=($(who | cut -d" " -f1 | sort -u )) for ((i=0;i<${#users[*]};i++)) do echo ${users[$i]} done
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.