NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
nalimleinad
Člen
Avatar
nalimleinad:25.10.2015 15:39

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:25.10.2015 16:05

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
Tvůrce
Avatar
kxmx:25.10.2015 16:33

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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
25.10.2015 16:33
Avatar
nalimleinad
Člen
Avatar
nalimleinad:25.10.2015 17:43

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.