Чтобы проверить, содержит ли переменная в Unix какую-либо из строк, упомянутых в оболочке файла bash - PullRequest
0 голосов
/ 11 октября 2018

У меня есть случай использования, когда переменная должна быть проверена с несколькими подстроками в ИЛИ-условии и произвести вывод;как показано ниже:

if [ ! -z "$var" ]; then
   if [[ $var =~ .*Focus.* ]] || [[ $var =~ .*Wallet.* ]]; then
      ser=`echo $var|cut -d ' ' -f 2`
      echo " $ser is correct"
   else
      ser=`echo $var|cut -d ' ' -f 2`
      echo "!!!! $ser is incorrect !!!!"
    fi
fi

var содержит pid и ServiceName.ServiceName проверяется, если он содержит любую из обеих подстрок.Он работает отлично.Но я хочу, чтобы var был проверен в списке подстрок, упомянутых в файле, чтобы этот файл можно было изменить позже для получения дополнительных подстрок.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Надеюсь, этот код поможет вам.

#!/bin/bash
file="/path/to/substring/file"
if [ ! -z "$var" ]; then
    while IFS= read -r line
    do
        if [[ $var == *"$line"* ]]; then
            echo "match: $line"
            break
        fi
    done <"$file"
fi
0 голосов
/ 11 октября 2018

При сопоставлении параметров могут использоваться расширенные шаблоны:

#! /bin/bash

check=$(tr '\n' '|' < list_of_terms.txt)
check="@(${check%|})"

for service in Service1 GetFocus WalletLost ; do
    if [[ $service == *$check* ]] ; then
        echo $service matches
    fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...