Как найти подстроку в переменной bash оболочки script

У меня есть переменная, как показано ниже.

variable = This script is not found

if [[ "$variable" = ~ "not found" ]];
then
echo "Not Found"
else
echo "Its there"
if

при выполнении им получения ниже err,

line 4: syntax error in conditional expression
./test.sh: line 4: syntax error near `found"'
./test.sh: line 4: `if [[ "$variable" = ~ "not found" ]]; '

Может ли кто-нибудь указать мне, что здесь отсутствует?

Ответ 1

LIST="some string with a substring you want to match"
SOURCE="substring"

if echo "$LIST" | grep -q "$SOURCE"; then
    echo "matched";
else
    echo "no match";
fi

Удачи;)

Ответ 2

Сравните это с вашей версией в указанных пунктах:

variable="This script is not found"  # <--

if [[ "$variable" =~ "not found" ]]  # <--
then
    echo "Not Found"
else
    echo "Its there"
fi  # <--

Вы не можете поместить пробелы вокруг = в присваивание, и вам нужно указать строковый литерал с пробелами. Вам не нужен трейлинг; если вы собираетесь положить его на свою линию. И if-then заканчивается на "fi", а не "if".

Ответ 3

вот правильная конструкция вашего оператора if

if [[ "$variable" =~ "not found" ]]; then
      echo "Not Found";
else
      echo "Its there";
fi

Ответ 4

Я пробовал ниже коды, которые всегда возвращают одинаковый результат либо в true, либо в false

if [[ "$variable" =~ "not found" ]]; then
      echo "Not Found";
else
      echo "Its there";
fi