2013-11-24 3 views
3

В сценарии bash, который захватывает ссылку href, как bash знает, что TEXT является ссылкой, а не типичной строкой? Почему в конце, когда $ TEXT = "www.google.com", ТЕКСТ по-прежнему является ссылкой? Можете ли вы сделать это с файлом? Например, имея «Click me», который запускает скрипт.Как bash распознает ссылку?

shopt -s nocasematch 

TEXT='<a href="http://www.google.com/search/something/lulz/here2 i=!mfo1iu489fn1o2jlk21m4098mdoi">"test link"</a><br>' 

TEXT=${TEXT##*href=\"} 
TEXT=${TEXT%%\"*} 
TEXT=${TEXT##*//} 
TEXT=${TEXT%%/*} 

echo $TEXT 
+0

Как можно сказать, что bash * знает, что-то есть ссылка *? – choroba

ответ

4

Я бы сказал, что сам bash не распознает ссылки. Но некоторые эмуляторы терминала делает

  • в гнома терминале при вводе echo http://www.google.com или «эхо www.google.com» терминал с позволит вам нажать на ссылку, но echo google.com не будет признан как один - это, скорее всего, зависит от http:// префикс (ясно показывая, что это ссылка) или www префикс (часто встречающиеся в WWW адреса),
  • терминологии акт E17 в аналогично гнома teminal в связи с этим,
  • вероятно, большинство других эмуляторы терминалов будут действовать таким же образом, но что я могу подтвердить.

Из того, как используются скрипты bash, я бы сказал, что нет никакого независимого от реализации способа добавления кликов URL в bash. Но вы можете использовать описанный способ получения аналогичного поведения в эмуляторах терминалов. С другой стороны, не получить от пользователя какой-да-нет переменной, и использовать его в условном вызова программы:

read openpage 
if $openpage -eq "yes" 
    # open browser with your URL 
fi 

где, как открыть веб-страницу описана, например, here.

Что касается файлов, я бы остался с if $runfile -eq "yes" then command; fi. В принципе, bash не было сделано с каким-либо графическим интерфейсом на уме - это терминал в конце концов.

Смежные вопросы