Я почти уверен, что вы полностью изучите свой код и поймете, что ваш код будет вызывать функцию с аргументом вроде:
awk_egrep "some_argument"
Теперь перейдем к вашему вопросу о том, почему используется pattern="$pattern_string"
,на самом деле мы могли бы использовать непосредственно как:
awk '
...........your awk code.....
' "$pattern_string"
Это выше должно быть достаточно хорошо, чтобы заставить вашу функцию работать, почему переменная используется, вы можете видеть, так как функция ожидает, что ей будет передан аргумент при вызове ида, это переменная для awk
.
Еще одна вещь выглядит так, как будто OP не передал полный код, поэтому есть вероятность, что awk читает данные из стандартного ввода, а не из Input_file.