Как найти, если строка содержит переменную, которая имеет содержимое файла? - PullRequest
1 голос
/ 13 июня 2019

не удалось найти определенную строку в переменной, содержащей содержимое файла

#!/bin/bash

core_pattern=$(cat /proc/sys/kernel/core_pattern)
apport_full_path="/usr/share/apport/apport"


if [[ $(grep "$apport_full_path" "$core_pattern") ]] ; then
   echo "Found"
else
   echo "Not Found"
fi


grep: |/usr/share/apport/apport %p %s %c %d %P: No such file or directory
Not Found

Я ожидаю вывод «Found» или «Not Found», но в итоге получаю сообщение об ошибке

1 Ответ

1 голос
/ 13 июня 2019

Если вы хотите сохранить файл в переменной, а затем запустить grep, этот подход является избыточным:

#!/bin/bash

core_pattern=$(cat /proc/sys/kernel/core_pattern)
apport_full_path="/usr/share/apport/apport"


if  grep -q "$apport_full_path" <<< "$core_pattern"  ; then
   echo "Found"
else
   echo "Not Found"
fi

ИЛИ, лучше, запустить grep над самим файлом, зачем хранить в переменной:

#!/bin/bash

pattern_file="/proc/sys/kernel/core_pattern"
apport_full_path="/usr/share/apport/apport"


if  grep -q "$apport_full_path" "$pattern_file"  ; then
   echo "Found"
else
   echo "Not Found"
fi

Обычно grep используется как:

grep <string to search> <file_to_seaarch>

или

grep <string_to_Search> <<< "${variable_to_search}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...