Когда вы объявляете переменную как local
или export
ed, это само по себе является командой, которая вернет успех или нет.
$ var=$(false)
$ echo $?
1
$ export var=$(false)
$ echo $?
0
Таким образом, если вы хотите воздействовать на возвращаемое значение вашей команды (echo "$current_line" | mawk '/.+=.+/ {print $1 }'
), вы не сможете этого сделать, поскольку она будет завершаться с 0 до тех пор, пока успешно выполняется локальное объявление (, что почти всегда будет ).
Во избежание этого предлагается объявлять отдельно, а затем присваивать:
local key_value
key_value=$(echo "$current_line" | mawk '/.+=.+/ {print $1 }')
Это правило проверки оболочки, которое я часто игнорирую, и IMO можно безопасно игнорировать, если вы знаете, что не пытаетесь воздействовать на возвращаемое значение объявления этой переменной.
Вы можете проигнорировать это, добавив следующее в начало вашего скрипта (Под хэш-бангом, конечно):
# shellcheck disable=SC2155