Заменить:
[ [ $# -ge 2 ] && [ [ grep -o "$2" $1 | wc -l ] -gt 0 ] ]
На:
[ $# -ge 2 ] && grep -q "$2" "$1"
В этой команде:
[ $# -ge 2 ]
проверяет, есть ли 2 илибыло предоставлено больше параметров
&&
логично и
grep -q "$2" "$1"
возвращает значение true, если шаблон $2
появляется в файле $1
.Опция -q
говорит grep
, чтобы он молчал и просто установил код выхода, который будет искать команда if
.
Пример:
Рассмотрим каталог с этим файлом:
$ cat input.txt
a pattern here
Давайте установим параметры такими, какими они были бы в сценарии оболочки:
$ set -- input.txt pattern
Теперь давайте запустим нашу команду:
$ if [ $# -ge 2 ] && grep -oq "$2" $1; then echo yes; fi
yes