Односторонняя дорога:
#!/bin/sh
. config
while read line
do
eval echo $(echo $line | sed "s/\([^<]*\)<%= @\([^ ]*\) %>/\1 \$\2/")
done < template
Результаты:
The host is localhost
The port is 8080
Используя sed
, мы извлекаем символы до' <' и формируем группу (\1
), и извлечение заполнитель и форма другая группа (\2
). Этим заменяют с 1-й группой и затем долларовым символом, сопровождаемым 2-й группой. Только при помощи eval
команда, переменная может быть оценена и расширена.
Удостоверьтесь, что Вы правильно определили имя класса окна, для которого Вы пытаетесь создать правило. Условно, имена классов окна использованы для своей выгоды. Можно использовать программу xprop
обнаружить корректное имя класса. Как пример, для этой терминальной программы я имею открытый, xprop
распечатывает:
WM_CLASS(STRING) = "x-terminal-emulator", "URxvt"
Первая строка является именем "экземпляра" (обычно, имя раньше запускало программу); вторая строка является "классом".
Это все обсуждено подробно в Понимании Правил, страница, которую я записал на Wiki Awesome некоторое время назад.