Используя xmllint и опцию--xpath , это очень просто. Вы можете просто сделать это:
XML_FILE=/path/to/file.xml
HOST=$(xmllint --xpath 'string(/config/global/resources/default_setup/connection/host)' $XML_FILE
USERNAME=$(xmllint --xpath 'string(/config/global/resources/default_setup/connection/username)' $XML_FILE
PASSWORD=$(xmllint --xpath 'string(/config/global/resources/default_setup/connection/password)' $XML_FILE
DBNAME=$(xmllint --xpath 'string(/config/global/resources/default_setup/connection/dbname)' $XML_FILE
Если вам нужно получить атрибут элемента, это также легко сделать с помощью XPath. Представьте, что у вас есть файл:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="screensaver.turnoff"
name="Turn Off"
version="0.10.0"
provider-name="Dag Wieërs">
..snip..
</addon>
Необходимые операторы оболочки будут:
VERSION=$(xmllint --xpath 'string(/addon/@version)' $ADDON_XML)
AUTHOR=$(xmllint --xpath 'string(/addon/@provider-name)' $ADDON_XML)
Используйте icesh
, чтобы найти условия, которые должны войти в ~/.icewm/winoptions
. Это те, что в 4-м поле, как я определил методом проб и ошибок:
$ icesh systray
0xc00001 0 5981 "pnmixer" : (pnmixer.Pnmixer) 10x10+10+10
0x1000001 0 5980 "NetworkManager Applet": (nm-applet.Nm-applet) 10x10+10+10
0x1400001 0 5988 "trayleds.py" : (trayleds.py.Trayleds.py) 10x10+10+10
0x1200001 0 5989 "traybr.py" : (traybr.py.Traybr.py) 10x10+10+10
Итак, чтобы получить [2] nm-applet
, [4] traybr.py
, [1] pnmixer
, [3]trayleds.py
заказ, это ваш~/.icewm/winoptions
:
NetworkManager Applet.order: +1
traybr.py.order: +2
pnmixer.order: +3
trayleds.py.order: +4
Результат: