Попытка получить веб-страницу в виде строки в нижнем регистре, а затем выполнить поиск подстроки в выводе строки
Моя попытка:
1 #!/usr/bin/env bash
2
3 URL = "https://somesite.com"
4 MOVIES_SOURCE = "movies.txt"
5 PAGE=`curl "$URL"` | tr '[:upper:]' '[:lower:]'
6
7 while IFS= read -r movie
8 do
9 FOUND = "$($PAGE =~ "$movie")"
10 echo $FOUND
11 if [[ $FOUND ]]; then
12 echo "$movie found"
13 fi
14 done < $MOVIES_SOURCE
15
Когда я запускаю это, я получаю line 9: =~: command not found
Переменная $movie
действительна и содержит каждую строку из movies.txt
, но я изо всех сил пытаюсь понять эту!
Кстати, добавление номеров строк усложняет копирование и тестирование кода.
Я немного не понимаю, что вы пытаетесь сделать... некоторые примеры входных данных и соответствующие желаемые результаты сделают ситуацию более ясной. Подозреваю, что это можно свести к короткой строчке awk.
Если вы хотите использовать сопоставление регулярных выражений в bash:
if [[ $PAGE =~ $movie ]]; then
echo "$movie found"
fi
пример:
PAGE = "text blah Avengers more text"
movie = "Avengers"
if [[ $PAGE =~ $movie ]]; then
echo "$movie found"
fi
дает:
Avengers found
Также: для захвата вывода всей команды curl:
PAGE=$(curl "$URL" | tr '[:upper:]' '[:lower:]')
$()
обратным кавычкам$PAGE
содержал вывод, в котором вы преобразовали в нижний регистр.
Используйте оператор
~
внутри[[..]]