Asignaciones condicionales en bash

Asignaciones condicionales en bash

En bash(y zsh), ¿cómo asigno de manera más concisa el valor de $1a la variable w, si $1se proporciona, y en caso contrario, un valor predeterminado 4?

Lo intenté

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

pero eso devolvió un mensaje de error.

¿Hay algo más sencillo que

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

Respuesta1

Utilice una expansión de parámetros del formulario.${parameter:-word}

${parameter:-word}Utilice valores predeterminados. Si el parámetro no está establecido o es nulo, se sustituye la expansión de la palabra. De lo contrario, se sustituye el valor del parámetro.

w=${1:-4}

Omitir los dos puntos da como resultado una prueba solo para un parámetro que no está configurado.

w=${1-4}

información relacionada