Portál AbcLinuxu, 3. května 2025 15:45
Err " ${0/*\/} toggle [index|type]" Err "type:" Err " all" for TYPE in `cat "$SYS_DIR"/*/type | sort | uniq`; do
${0##*/}
je lepší než ${0/*\/}
, když ti jde o oříznutí řetězce od začátku.
for x in `cat ...`
je hrůza. Tohle nejde?
cat "$SYS_DIR"/*/type | sort -u | while read TYPEDál jsem to neřešil. Neber to jako buzeraci, jen se snažím pomoct...
>&2
.
for i in ` comman`;do
je bohuzel nekdy nutnosti. Min. ve dvou pripadech.
Prvni pripad je, kdyz kod v cykly neco cte ze stdin, potom totiz command | while read a;do command2 "$a" ; done
probehne pouze jednou, protoze z nejakyho duvodu sezere ten command2 ze stdin zbytek toho vystupu z command. Uz se mi to parkrat stalo, pokud si vzpominam, tak to bylo se ssh. generate-host-list | while read host; do ssh "$host" remote-cmd ; done
bezelo jenom jednou pro prvniho hosta.
Druhy pripad je, kdyz chces v cyklu nastavit nejakou hodnotu, kterou pak pouzijes dal. Pipe totiz vyvola dalsi bash, takze veskere upravy jsou pouze lokalni, cili generate-list | while read item;do if [ $item -gt $max ] ; then max=$item;fi;done ; pracuj-dale-s-max
nebude to same jako for item in `generate-list` ; do if [ $item -gt $max ];then max=$item;fi;done;pracuj-dale-s-max
"-n"
pre ssh, potom ssh necita standardny vstup.
dave@amd64 ~ $ for x in $(echo a b c); do max=$item; done dave@amd64 ~ $ echo $max
$ for x in a b c; do max=$x; done $ echo $max c
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.