В " Escape # shell_command " не так много информации о том, как правильно бежать.Я неправильно попытался:
link = "http://www.google.com"
p system(Escape.shell_command(["bash --login -c 'echo $PATH &>/dev/null'","wget --quiet -O - #{link} | ssed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;T;s!.*<title>\(.*\)</title>.*!\1!p}'"]))
, что в основном две команды: Первая говорит $PATH
использовать мой профиль и подавить вывод:
bash --login -c 'echo $PATH &>/dev/null'
Вторая команда использует wget
для полученияссылка и направляет ее в ssed
для анализа заголовка.
wget --quiet -O - #{link} | ssed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;T;s!.*<title>\(.*\)</title>.*!\1!p}'
В этом случае sed будет хорошо работать для пользователей Linux.
В bash команда работает правильно:
wget --quiet -O - http://www.google.com | ssed -n -e 'H;${x;s!.*<head[^>]*>\(.*\)</head>.*!\1!;T;s!.*<title>\(.*\)</title>.*!\1!p}'
РЕДАКТИРОВАТЬ:
Я забыл опубликовать ошибку от ruby:
false
sh: bash --login -c 'echo $PATH &>/dev/null': No such file or directory
2.Это работает в ruby, я бы вручную вводил команду ssed, но я не слишком уверен, как избежать этого, я попытался скопировать и вставить вывод из escape-камня ниже, но безрезультатно:
p %x[bash --login -c 'echo $PATH &>/dev/null; wget --quiet -O - http://www.google.com | grep 'schema.org'']