Передача аргументов команд в переменной

Когда вы объявляете переменную как localили exported, это само по себе является командой, которая вернет успех или нет.

$ 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
0
21.06.2020, 13:21
0 ответов

Теги

Похожие вопросы