Portál AbcLinuxu, 19. května 2025 10:57

Dotaz: Jak ošetřit při načítání soubory jejichž název obsahuje mezeru

1.10.2021 15:36 Marek K
Jak ošetřit při načítání soubory jejichž název obsahuje mezeru
Přečteno: 366×
Odpovědět | Admin
Dobrý den, snažím se tímto skriptem načíst veškeré soubory ze všech adresářů. Problém nastane pokud název souboru obsahuje mezeru. Nějaký nápad jak to opravit? Děkuji.
#!/bin/bash

declare file

for file in $(find $(dirname $0)/src -type f)
do
  source $file
done

unset file
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.10.2021 15:43 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak ošetřit při načítání soubory jejichž název obsahuje mezeru
Odpovědět | | Sbalit | Link | Blokovat | Admin
while IFS= read -r file; do
  source "$file"
done < <(find "$(dirname $0)/src" -type f)
1.10.2021 16:12 Marek K
Rozbalit Rozbalit vše Re: Jak ošetřit při načítání soubory jejichž název obsahuje mezeru
Děkuji. S použitím for to nejde?
1.10.2021 17:42 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak ošetřit při načítání soubory jejichž název obsahuje mezeru

Jistě, že s for ((;;)); ..., break a continue půjde úplně cokoliv, ale otázka je, proč takový nesmysl dělat. ;-) Jo, kdyby to mělo méně řádků, možná by to stálo za úvahu.

Pokud by šlo o for-cyklus přes předem načtené výsledky toho vyhledávání: Když nemusím všechny výsledky naráz načítat do paměti, raději je všechny naráz načítat nebudu. Ne že by dnes hrozil nedostatek paměti, ale čím menší je náročnost (ať časová nebo paměťová), tím lépe pro [udržovatelnost | rozsah použitelnosti | rozšiřitelnost] kódu.

1.10.2021 17:46 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak ošetřit při načítání soubory jejichž název obsahuje mezeru

Tady třeba musím celé pole files načíst předem, což výše uvedené řešení nedělá / nepotřebuje:

readarray -t files < <(find "$(dirname $0)/src" -type f)

for file in "${files[@]}"; do
  source "$file"
done

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.