Получить последний курс обмена с помощью командной строки?
Я ищу способ получить последний обменный курс онлайн с помощью командной строки. Я хочу использовать его с другой программой. До сих пор все, что у меня есть, это:
wget -qO- "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" | sed '/res/!d;s/<[^>]*>//g';
Не мой код, найденный в сети.
Он выведет на консоль, но мне нужно сохранить его в файл или в переменную другой программы, которая вызовет эту команду. У меня нет опыта работы с wget и я не могу найти другой способ сделать то, что я хочу. Есть ли какая-либо программа (Windows предпочтительнее, но *nix приемлема), чтобы сделать это, или есть способ с помощью wget?
3 ответа
Если вы можете найти сайт, который предоставляет форекс информацию в удобной для автоматизации форме, то вы можете отказаться от звонка sed
в целом и просто использовать -O
переключиться на wget
, До этого команда, которую вы нашли, прекрасно работает с портами Windows wget и sed; вам нужно всего лишь сделать пару небольших изменений. Во-первых, вы должны заменить одинарные кавычки в вызове sed
с двойными кавычками и удалите точку с запятой. Во-вторых, вам нужно перенаправить окончательный вывод в файл или переменную среды вместо консоли.
Для вывода на консоль:
wget -qO- "google.com/finance/converter?a=1&from=usd&to=inr" | sed "/res/!d;s/<[^>]*>//g"
Для вывода файла (при необходимости измените имя файла и путь):
wget -qO- "google.com/finance/converter?a=1&from=usd&to=inr" | sed "/res/!d;s/<[^>]*>//g" > forex_%date%.log
Для вывода переменной (при необходимости измените имя переменной):
for /f "delims=" %%i in ('wget -qO- "google.com/finance/converter?a=1&from=usd&to=inr" ^| sed "/res/!d;s/<[^>]*>//g"') do @set forex=%%i
Эта команда должна работать (почти) в любой UNIX или в Git Bash в Windows. Если у вас нет wget
тогда вы можете использовать curl
вместо:
curl -L "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" | sed '/res/!d;s/<[^>]*>//g'
Вы можете сохранить в файл с помощью:
the_cmd > rate.txt
Или переменная с:
rate=$(the_cmd)
Вы можете подавить stderr
из команд, чтобы уменьшить шум. Вы можете сделать это, перенаправив их stderr
в /dev/null
, как это:
curl -L "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" 2>/dev/null | sed '/res/!d;s/<[^>]*>//g'
wget -qO- "http://www.google.com/finance/converter?a=1&from=usd&to=inr&hl=es" 2>/dev/null | sed '/res/!d;s/<[^>]*>//g'
Не уверен, если вам нужно что-нибудь еще. Я не знаю лучшего инструмента для этого, ни в Windows, ни в *nix.
Поскольку http://www.google.com/finance/converter сейчас не работает, замените его на xe.com.
Следующая команда выведет обменный курс EUR/USD.
curl -s "https://www.xe.com/currencyconverter/convert/\?Amount\=1\&From\=EUR\&To\=USD"|awk -F 'EUR / USD' '{printf substr($2,14,7);}'