Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: X0to 19. 12. 2019, 07:58:57

Název: Soubor s mezerami ve skriptu v Bashi
Přispěvatel: X0to 19. 12. 2019, 07:58:57
Ahoj, poměrně snadný dotaz, který mi dělá problémy.
Ve scriptu mi nefunguje následující:
Citace
cesta="/share/test/nazev - nazev 2"
file=$(ls "$cesta/*.txt")
Selže na no such file, soubor tam takový je.

Přímo v řádku funguje
Citace
ls /share/test/nazev\ -\ nazev2/*.txt
Ale ve scriptu už to zase nefunkční i když to dám přímo do k ls bez promněné.
Název: Re:bash ls mezery a wildcard
Přispěvatel: drmartins 19. 12. 2019, 08:30:11
ve skriptu bych řekl že ti to nefunguje protože je špatně naplněná proměná
cesta="/share/test/nazev - nazev 2"
čili pak by to bude ve výsledku
ls /share/test/nazev - nazev 2 což nebude fungovat. Naplň tu proměnou tak jak to děláš přímo na řádku včetně těch zpětných lomítek a bude to zřejmě fungovat :-)
Název: Re:bash ls mezery a wildcard
Přispěvatel: ByCzech 19. 12. 2019, 09:05:56
Ahoj, poměrně snadný dotaz, který mi dělá problémy.
Ve scriptu mi nefunguje následující:
Citace
cesta="/share/test/nazev - nazev 2"
file=$(ls "$cesta/*.txt")
Selže na no such file, soubor tam takový je.

Přímo v řádku funguje
Citace
ls /share/test/nazev\ -\ nazev2/*.txt
Ale ve scriptu už to zase nefunkční i když to dám přímo do k ls bez promněné.

Přímo v řádku to je ale narozdíl od skriptu escapované. Bez toho to selže taky.
Název: Re:Soubor s mezerami ve skriptu v Bashi
Přispěvatel: tecka 19. 12. 2019, 10:08:15
Kód: [Vybrat]
ls "$cesta"/*.txt
Název: Re:Soubor s mezerami ve skriptu v Bashi
Přispěvatel: X0to 19. 12. 2019, 11:46:14
Citace
cesta="/share/test/nazev\ -\ nazev2"
ls "$cesta"/*.txt
nefunkční, výstup vypadá v pořádku, přesně jako v řádku, akorát nefunguje.

Rovněž varianta níže není funkční
Citace
cesta="/share/test/nazev\ -\ nazev2"
ls $cesta/*.txt

Funkční řešení je samotná bez promněné
Citace
ls /share/test/nazev\ -\ nazev2\*.txt
Název: Re:Soubor s mezerami ve skriptu v Bashi
Přispěvatel: tecka 19. 12. 2019, 11:55:46
A proč tam jebeš ta lomítka?
Kód: [Vybrat]
cesta="/share/test/nazev - nazev2"
ls "$cesta"/*.txt
Název: Re:Soubor s mezerami ve skriptu v Bashi
Přispěvatel: Medys 19. 12. 2019, 12:23:29
Řešení:

Kód: [Vybrat]
#!/bin/bash
cesta='/share/test/nazev - nazev 2'
file=$(ls "$cesta"/*.txt)

echo $file
Název: Re:Soubor s mezerami ve skriptu v Bashi
Přispěvatel: X0to 20. 12. 2019, 08:41:00
Oba příspěvky výše potvrzuji, funkční.
Tento způsob jsem zkoušel taky, bohužel měl jsem chybu v cestě, takže mezi klávesnicí a židlí.  ::)
Děkuji všem.