Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: iX 08 Února 2012, 10:48:51
-
Potřeboval bych pomoc se skriptíčkem:
Řekněme, že výstup příkazu blkid -U 78AD-98FA je někdy: /dev/sda1, někdy: /dev/sdb1, jindy /dev/sde1 ...atd.
Já potřebuju následně změnit tu jedničku na konci na trojku - se zachováním správného písmenka (třeba /dev/sde3).
A tento výsledek pak použít jako parametr dalšího příkazu.
Nevěděl by někdo jak na to? (O skriptování a práci s řetězci nevím skoro nic :-\).
-
musis do sveho skripticku pouzit stream line editurek jako treba sediik:
> echo fuj | sed 's/fuj/mnam/'
mnam
viz manual k sedu, treba tohle tohle http://sed.sourceforge.net/sed1line_cz.html a nebo:
http://www.root.cz/clanky/neco-malo-o-sedu/
http://www.root.cz/clanky/hratky-z-radky-tr-sed-awk-a-ti-dalsi/
http://www.osnews.com/story/21004/Awk_and_Sed_One-Liners_Explained
-
Děkuji za navedení za světlem! ;)
Asi nejjednodušší je: blkid -U 78AD-98FA | tr "1" "3"
-
A Ou. Nějak jsem se zasekl... :(
Myslel jsem, že když místo toho /dev/sda3 v tomto příkazu:
sudo truecrypt --background-task -k /AA/EE/NN.dat /dev/sda3 /mnt/AA
dosadím:
sudo truecrypt --background-task -k /AA/EE/NN.dat 'blkid -U 78AD-98FA | tr "1" "3"' /mnt/AA
tak to pojede, ale ono EE!! Ten příkaz nebere vnořené příkazy jako argumenty.
Jak z toho wen?
:-*
-
Jestli jsi to opravdu napsal takto, tak to fungovat nemůže. Jednoduché uvozovky subshell nespustí, ty obrácené ano, případně $(příkaz).
sudo truecrypt --background-task -k /AA/EE/NN.dat `blkid -U 78AD-98FA | tr "1" "3"` /mnt/AA
-
Díky! Přesně tak to funguje! (Tam to nebyla mezera v cestě, ale další operand... ;))
Teprve teď jsem zaregistroval existenci dalších uvozovek - do teď jsem si myslel, že jde o znak idntický s ' :-)