Использовать встроенные условные выражения; Проверьте с помощью расширения параметров
. Вы можете преобразовать его в одну строку, используя встроенные условные выражения и логическую &&
условную конструкцию . Также неплохо использовать правильное цитирование. Например:
[[ -n "$2" ]] && EXCLUDE_PORTS="--exclude-ports '$2'"
Здесь вы можете проверить logi c с помощью расширения параметра :-
вот так:
# make sure your environment is clean for testing
unset EXCLUDE_PORTS
# set exactly two positional arguments
set -- one two
# set variable if $2 zero length when expanded
[[ -n "$2" ]] && EXCLUDE_PORTS="--exclude-ports '$2'"
# print variable if set, or message to aid debugging
echo "${EXCLUDE_PORTS:-variable is empty}"
# --exclude-ports 'two'
Если у вас только один позиционный параметр:
unset EXCLUDE_PORTS
set -- one
[[ -n "$2" ]] && EXCLUDE_PORTS="--exclude-ports '$2'"
echo "${EXCLUDE_PORTS:-variable is empty}"
variable is empty