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: Cendas 22 Prosince 2011, 18:19:12
-
Ahoj Píšu jeden skript v bashi a z tohohle řádku:
<symbol number="1" name="Fair" var="01d" />
potřebuju to co je v uvozovkách načíst do proměnné.
Poradí někdo. Tedy každé uvozovky je jedna proměnná.
-
Záleží jaký je kontext, kdybych přepokládal jen strukturu z předloženého řetězce, vypreparoval bych z toho definici proměnných třeba takto:
eval `echo '<symbol number="1" name="Fair" var="01d" />' | sed 's/<symbol *\(.*"\) *\/>/\1/'`
proměnné budou $number, $name a $var.
Edit: blbnu, opravuju, co opravovat netřeba, původní platí, max s jednou mezerou navíc :)
-
Pěkné! Ale funguje jenom v dashi, v bashi
$ eval `echo '<symbol number="1" name="Fair" var="01d" />' | sed 's/<symbol *\(.*"\) *\/>/\1/'`
1: command not found
Bash verze$ bash --version | head -1
GNU bash, version 4.1.5(1)-release (i686-pc-linux-gnu)
$ a=$(echo '<symbol number="1" name="Fair" var="01d" />' | sed 's/<symbol *\(.*"\) *\/>/\1/')
$ echo $a
number= 1 name= Fair var= 01d
EDIT: moje chyba, měl jsem špatně nastavené IFS, funguje to
-
Díky mě to funguje. :)
-
Ještě bych potřeboval jestli by to nešlo trochu upravit protože name tam mám vícekrát.
Jestli by to nešlo aby to vypsalo takhle?
symbol_number= 1 symbol_name= Fair symbol_var= 01d
-
Tak jsem to vyřešil že si ty proměnné přiřadím do jiných.
Lepší řešení mě nenapadlo.