Ниже приведен скрипт, чтобы найти в файле определенный массив разных слов «боты, шпионские программы, вирусы», если файл существует.Использование grep в массиве
#!/bin/bash
#strings to find in file
NAME[0]="bots"
NAME[1]="spyware"
NAME[2]="virus"
#location of file
LOGS=/home/testing.txt
#define function to grep any of the above mentioned array strings in file
func(){
if `grep "${NAME[*]}" $LOGS`; then
echo "CRITICAL: ${NAME[*]}"
else
echo "errors not found"
exit
fi
}
#file exist or not exist
if [ -f $LOGS ]; then
echo " File Found"
#call functions
func
modified
else
echo "File Not Found"
exit
Но grep "${NAME[*]}" $LOGS
не работает. Ниже показана ошибка:
grep: virus: No such file or directory
grep: bots: No such file or directory
научиться использовать 'set -x' для включения трассировки отладки сценария оболочки (' set + x' отключить). И вы обнаружите, что вам нужно преобразовать ваш arr в цель поиска, которая выглядит как 'grep 'a | b | c' file'. И отличный второй Q, но нам нужно только увидеть код 'func()', поэтому научитесь настраивать Qs на нерабочий код. Удачи. – shellter