··echo "Most common currencies are CAD, CNY, EUR, USD, INR, JPY, and MXN"
··echo "Use \"$(basename $0) list\" for a list of supported currencies."
fi
if [$(uname) = "Darwin"]; then
··LANG=C # Для решения проблемы в OS X с ошибочными последовательностями
········ #·· байтов и lynx
fi
url="https://www.google.com/finance/converter"
tempfile="/tmp/converter.$$"
lynx=$(which lynx)
# Так как эти данные используются многократно, извлечем их,
#·· а потом займемся всем остальным.
currencies=$($lynx −source "$url" | grep "option value=" | \
··cut −d\" −f2- | sed 's/">/ /' | cut −d\(-f1 | sort | uniq)
########### Выполнить все запросы, не связанные с пересчетом.
if [$# −ne 4]; then
··if ["$1" = "list"]; then
····# Вывести список всех символов валют, известных калькулятору.
····echo "List of supported currencies: "
····echo "$currencies"
··fi
··exit 0
fi
########### Теперь выполним пересчет.
if [$3!= "to"]; then
··echo "Usage: $(basename $0) value currency TO currency"
··echo "(use \"$(basename $0) list\" to get a list of all currency values)"
··exit 0
fi
amount=$1
basecurrency="$(echo $2 | tr '[: lower: ]' '[: upper: ]')"
targetcurrency="$(echo $4 | tr '[: lower: ]' '[: upper: ]')"
# Наконец, фактический вызов калькулятора!
$lynx −source "$url?a=$amount&from=$basecurrency&to=$targetcurrency" | \
··grep 'id=currency_converter_result' | sed 's/<[^>]*>//g'
exit 0
Как это работает
Валютный калькулятор Google принимает три параметра непосредственно в URL: сумму, исходную валюту и конечную валюту. Как выглядит такой URL, можно видеть в следующем примере, запрашивающем пересчет 100 долларов США в мексиканские песо:
https://www.google.com/finance/converter?a=100&from=USD&to=MXN
Сценарий ожидает, что пользователь определит все три поля в аргументах, и затем передает их сайту Google в URL.
Сценарий также выводит несколько сообщений с информацией о порядке использования, что намного упрощает работу с ним. Чтобы увидеть эти сообщения, перейдем к разделу с демонстрационными примерами.
Запуск сценария
Сценарий спроектирован так, что им очень легко пользоваться, как можно заметить в листинге 7.17, однако знание валют хотя бы нескольких стран лишним не будет.
Результаты
Листинг 7.17. Запуск сценария convertcurrency
$ convertcurrency
Usage: convert amount currency to currency
Most common currencies are CAD, CNY, EUR, USD, INR, JPY, and MXN
Use "convertcurrency list" for a list of supported currencies.
$ convertcurrency list | head -10
List of supported currencies:
AED United Arab Emirates Dirham
AFN Afghan Afghani
ALL Albanian Lek
AMD Armenian Dram
ANG Netherlands Antillean Guilder
AOA Angolan Kwanza
ARS Argentine Peso
AUD Australian Dollar
AWG Aruban Florin
$ convertcurrency 75 eur to usd
75 EUR = 84.5132 USD
Усовершенствование сценария