Atribuições condicionais no bash

Atribuições condicionais no bash

Em bash(e zsh), como atribuo de forma mais concisa o valor de $1à variável w, se $1for fornecido, e caso contrário, um valor padrão 4?

tentei

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

mas isso retornou uma mensagem de erro.

Existe algo mais simples do que

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

Responder1

Use uma expansão de parâmetro do formulário${parameter:-word}

${parameter:-word}Use valores padrão. Se o parâmetro não estiver definido ou for nulo, a expansão da palavra será substituída. Caso contrário, o valor do parâmetro é substituído.

w=${1:-4}

A omissão dos dois pontos resulta em um teste apenas para um parâmetro que não está definido.

w=${1-4}

informação relacionada