Portál AbcLinuxu, 11. května 2025 23:28
Dobry den,
mam takovy drobny problem. Kdyz chci cist line-by-line pres read tak mi z radku /lib/libcosik.0 udela /lib/libcosik. , pritom kdyz /lib/libcosik.0 prepisu na /lib/libcosik.1 tak vse funguje jak ma.
Vi nekdo jak toto chovani obejit ?
Dekuji za pripadne odpovedi.
Kdyz chci cist line-by-line pres read tak mi z radku /lib/libcosik.0 udela /lib/libcosik. , pritom kdyz /lib/libcosik.0 prepisu na /lib/libcosik.1 tak vse funguje jak ma.
Mohl byste to trochu rozvést?
Mně tohle funguje bez problémů:
~$echo "/lib/libcosik.0" | ( read libname; echo $libname; ) /lib/libcosik.0
Aaaah pardon!! zpusobil to spatny IFS . I kdyz nechapu proc. Pouzil jsem IFS=0x07 .0x07 jako netisknutelnou klavesu bell abych neprisel o zadne znaky. a ten mi to zahadne delal.
No ale v tom pripade mam jinou otazku. Jaky IFS mam dat aby mi read nechal pocatecni mezery a pritom neprisel o zadne znaky?
No ale v tom pripade mam jinou otazku. Jaky IFS mam dat aby mi read nechal pocatecni mezery a pritom neprisel o zadne znaky?Mňo, IFS & spol. je od toho, aby právě mezery likvidovalo
Noo mojim cilem je si nasypat do pole radky textu a jednoduseji nez pres read me to nenapadlo.
Problem take je ze to musim cpat z roury a ne ze znameho souboru.
no proste neco ve stylu
cat text | while read line
do
pole[$l]="$line"
(( l++ ))
done
Noo mojim cilem je si nasypat do pole radky textu a jednoduseji nez pres read me to nenapadlo.
Tam jde spíš o to, co s tím bude dál (věřím, že tohle skutečný cíl není).
Jestli se s tím potom mají dělat nějaké složitější kejkle, je na místě zvážit, jestli je shell to pravé a není pohodlnější to udělat v PERLu nebo AWKu (podle toho, co ovládáte lépe).
Problem take je ze to musim cpat z roury a ne ze znameho souboru.
Tohle se tady řešilo před pár dny - bylo tam několik řešení.
Moje oblíbené:
cosi | (while read line; do ... done; ... );
IFS= while read line; do ... done
while IFS="" read line; do ... doneaby původní IFS zůstala ve zbytku skriptu nedotčena, tedy ve výchozím, očekávaném stavu. Samozř. záleží případ od případu, ale měnit si proměnné prostředí (ekvivalent nařezávání si větve) globálně by se mohlo jednou vymstít.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.