Diskuze: Linux bash - spojení dvou příkazů

Ostatní jazyky Ostatní programovací jazyky Linux bash - spojení dvou příkazů

Avatar
nalimleinad
Člen
Avatar
nalimleinad:

Momentálně mám kód

a=$(basename "$(ls | tail -1)")
b=${a%.*}

který mi vypíše nejnovější jméno souboru a osekne mu příponu.
Já bych potřeboval tyto dvě proměnné spojit, ovšem nějak nechápu ty složené závorky u druhé. Proč tam jsou složené a jaktože je "a" bez $ ?

 
Odpovědět 25.10.2015 15:39
Avatar
nalimleinad
Člen
Avatar
nalimleinad:

Dobrá, už jsem zjistil, že v proměnné $b se jedná o praktiku nahrazování proměnné, což se dělá tímto způsobem, ale nějak stále nemohu přijít na to, jak to spojit do jednoho.
Zkoušel jsem něco jako

${$(basename "$(ls | tail -1)")%.*}

, ale to mi bohužel neprojde. :)

 
Nahoru Odpovědět 25.10.2015 16:05
Avatar
kxmx
Redaktor
Avatar
kxmx:

ahoj, pokud to chceš mít na jednom řádku tak budeš muset použít nějaký další prográmek kterému přes pipu předáš výstup

echo $(basename "$(ls | tail -1 | sed 's/\.[^\.]*$//')")

třeba takhle by to šlo udělat sedem

sed 's/\.[^\.]*$//'

odstraní poslední tečku a vše co je za ní, pokud tam přípona není tak se nic nestane, ale mysli třeba na tar.gz

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 25.10.2015 16:33
Avatar
nalimleinad
Člen
Avatar
nalimleinad:

Přesně to jsem potřeboval. ;-) Děkuju.

 
Nahoru Odpovědět 25.10.2015 17:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.