Portál AbcLinuxu, 10. května 2025 07:05
for s in `find /media/g0.v0.f0/BACKUPS/ -type f -mmin -1`; do echo $s donektery vypise seznam souboru. Problem se vyskytne ve chvili kdy nazev souboru obsahuje mezeru. Jak docilim aby cyklus for pro iteraci pouzil znak noveho radku a ne prazdnou mezeru. Dekuji
Řešení dotazu:
while IFS= read -r -d $'\0' s; do echo "$s" done < <(find /media/g0.v0.f0/BACKUPS/ -type f -mmin -1 -print0)Přesměrování v příkladu je zapsáno, jak je zapsáno, protože
find | while
by byla pipeline, běžela v podprocesu a nešlo by uvnitř nastavit proměnné, aby existovaly i ve zbytku skriptu. Pokud to nevadí, lze použít normální pipeline.
/media/g0.v0.f0/BACKUPS/W2K/B W2K2011-08-21T173503.vbk /media/g0.v0.f0/BACKUPS/W2K/B W2K2011-08-22T170103.vib /media/g0.v0.f0/BACKUPS/W2K/B W2K2011-08-23T170026.vib /media/g0.v0.f0/BACKUPS/W2K/B W2K2011-08-24T170023.vibJak co nejelegantneji oriznu retezec
'/media/g0.v0.f0/'
tak at vystupem je toto:
BACKUPS/W2K/B W2K2011-08-21T173503.vbk BACKUPS/W2K/B W2K2011-08-22T170103.vib BACKUPS/W2K/B W2K2011-08-23T170026.vib BACKUPS/W2K/B W2K2011-08-24T170023.vib
find ... -printf '%P\0'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.