Базовая проверка строки не должна быть такой уж сложной:echo "INBOUND_PATH|/tmp" | grep -q '^INBOUND_PATH|.*$'
Я полагаю, вы имели в виду, что второй должен быть sed, а не grep:g_inboundDir=$(echo "INBOUND_PATH|/tmp" | sed 's/^\(INBOUND_PATH\)|\(.*$\)/\2/')
Обратите внимание на отсутствие -E. Я также исправил отсутствующий трейлинг /.
Конструкция ${variable-alternate value}
использует альтернативное значение, если переменная установлена, но не если для нее задана пустая строка (, то есть пустая ). Если вы хотите использовать альтернативное значение, если переменная не установлена ИЛИ установлена в пустую строку, используйте ${variable:-alternate value}
(, обратите внимание на двоеточие )вместо:
local v="${name:-$tag}"