сценарий оболочки обнаруживает первые пару букв - PullRequest
0 голосов
/ 17 июля 2010

Я пишу сценарий оболочки.Переменная будет иметь URL, который будет смотреть на первые несколько символов, и

  1. убедитесь, что есть что-то перед //...so http, https, rtmp, rtmps, rtmpe и т. Д.....
  2. если перед // // ничего нет, тогда скажите пользователю, что ничего нет ... иначе, если это значение = что бы ни делали

Как бы я смогсделать это?

Ответы [ 3 ]

3 голосов
/ 17 июля 2010
case "$URL" in
  http://*|https://*) echo "HTTP selected" ;;
  ftp://*|ftps://*) echo "FTP selected" ;;
  *) echo "Nothing selected" ;;
esac
1 голос
/ 17 июля 2010

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

Дополнительный бинарный оператордоступно с тем же приоритетом, что и == и! =.Когда она используется, строка справа от оператора считается расширенным регулярным выражением и соответствующим образом сопоставляется (как в регулярном выражении (3)).

Это было в описании [[ ]] операторов для вычисления выражений.

1 голос
/ 17 июля 2010

Во-первых, вам следует попробовать написать код на каком-нибудь языке, например, perl или ruby, который имеет широкие встроенные возможности регулярных выражений.Однако, если вы действительно хотите сделать это в оболочке, то операторы sting - ваш друг:

url = "нечто: // и что-то еще"

$ {url %%: //*} извлечет «что-то», то есть используемый протокол.

$ {url ## *: //} извлечет "и что-то еще", то есть все справа от: //

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...