Вы должны поместить сценарии awk в одинарные кавычки и использовать передачу переменных, чтобы получить переменные оболочки в сценарий awk. Тогда вам не придется делать все это, убегая. И я не думаю, что обратная косая черта продолжения строки и точка с запятой необходимы.
Являются ли разделители полей пробелами или они заключены в квадратные скобки?
awk -F ' ' -v awkvar=$shellvar '
BEGIN {
do_something
}
{
do_something_with awkvar
}' file > out_file
Также существует небольшая опасность того, что ваши тесты не пройдут, если переменная содержит строку, начинающуюся с тире. Есть как минимум пара способов защиты от этого:
if [ "" == "$DELETE_FLAG" ]; then # the dash isn't the first thing that `test` sees
if [ x"$DELETE_FLAG" == x"" ]; then # ditto