Portál AbcLinuxu, 14. května 2025 02:26
for promenna in `cat soubor_se_seznamem.txt`; do muj prikaz s promennou $promenna ; doneNevim ale, a nikde nemuzu najit, jak to udelat, aby for loopovalo :) Diky za rady
while read var echo $var done < soubor_se_seznamem.txt
Oprava:
while read var; do echo $var done < soubor_se_seznamem.txt
while true ; do for promenna in `cat soubor_se_seznamem.txt` ; do echo $promenna done done
IFS=$'\n'to shell rozdeli slovech, nicmene useless use of cat while pres stdin je lepsi, ale uvnitr cyklu muzou (a delaji to) poustene programy ze stdin uzirat dalsi radky, takze je potreba to osetrit bud explicitnim redirectem (ssh nekam < /dev/null) nebo nejak jinak (ssh -n)
V takových případech by mohlo pomoci
while read var <&3; do echo "$var" done 3<file
for i in `cat soubor_se_seznamem.txt`; do
echo "$i"
done
for i in `cat nicky.txt`; do cat rawvypis.txt |grep -i "$i" > vypisy/"$i".txt; doneMelo vy to fungovat tak, ze v souboru nicky.txt je sloupec nazvu. Tyhle nazvy ja potrebuju vyfiltrovat ze souboru rawvypis.txt, coz je jenom velky vypis adresare a vysledek by mel byt, ze budu mit pro kazdy nazev soubor, ve kterem bude jen ta cast vypisu adresare, ktera ten nazev obsahuje. Takhle, jak to delam vyse, mi to vytvori spravne stovky souboru podle nazvu v nicky.txt, ale soubory jsou bohuzel prazdne :(. A zvlastni vec - ne ze by byla na zavadu, ale pred .txt je vzdycky otaznik... takhle nejak:
nazev1?.txt nazev2?.txt ...atdJsem z toho jelen
while read var; do cat rawvypis.txt| grep -i $var > vypisy/$var.txt; done < nicky.txtTakhle to samy :(
for i in `cat vzor.txt`; do
var1=`grep -i "$i" dirlist.txt`
var2=${var1%/*}
if [[ -n "$var2" ]]; then
echo "$var2" >> vypisy_"${i}".txt
fi
done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.