Soubor s mezerami ve skriptu v Bashi

Soubor s mezerami ve skriptu v Bashi
« kdy: 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é.
« Poslední změna: 19. 12. 2019, 09:18:30 od Petr Krčmář »


Re:bash ls mezery a wildcard
« Odpověď #1 kdy: 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 :-)

ByCzech

  • *****
  • 1 870
    • Zobrazit profil
    • E-mail
Re:bash ls mezery a wildcard
« Odpověď #2 kdy: 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.

tecka

  • ***
  • 171
    • Zobrazit profil
    • E-mail
Re:Soubor s mezerami ve skriptu v Bashi
« Odpověď #3 kdy: 19. 12. 2019, 10:08:15 »
Kód: [Vybrat]
ls "$cesta"/*.txt

Re:Soubor s mezerami ve skriptu v Bashi
« Odpověď #4 kdy: 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
« Poslední změna: 19. 12. 2019, 11:53:26 od X0to »


tecka

  • ***
  • 171
    • Zobrazit profil
    • E-mail
Re:Soubor s mezerami ve skriptu v Bashi
« Odpověď #5 kdy: 19. 12. 2019, 11:55:46 »
A proč tam jebeš ta lomítka?
Kód: [Vybrat]
cesta="/share/test/nazev - nazev2"
ls "$cesta"/*.txt

Re:Soubor s mezerami ve skriptu v Bashi
« Odpověď #6 kdy: 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
« Poslední změna: 19. 12. 2019, 12:29:01 od Medys »

Re:Soubor s mezerami ve skriptu v Bashi
« Odpověď #7 kdy: 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.