Условные присваивания в bash

Условные присваивания в bash

В bashzsh) как мне наиболее лаконично присвоить значение $1переменной w, если $1задано, и значение по умолчанию в противном случае 4?

Я пытался

w=$(( $1 != "" ? $1 : 4))

но это вернуло сообщение об ошибке.

Есть ли что-нибудь проще, чем

w=4; [[ $1 != "" ]] && w=$1

решение1

Используйте расширение параметра в форме${parameter:-word}

${parameter:-word}Использовать значения по умолчанию. Если параметр не установлен или равен нулю, подставляется расширение слова. В противном случае подставляется значение параметра.

w=${1:-4}

Пропуск двоеточия приводит к проверке только неустановленного параметра.

w=${1-4}

Связанный контент