bash 中的条件赋值

Too*_*rot 1 bash zsh

bash(和zsh)中,我如何最简洁地将 的值分配给$1变量w,如果$1给出,否则为默认值4

我试过

w=$(( $1 != "" ? $1 : 4))
Run Code Online (Sandbox Code Playgroud)

但这返回了一条错误消息。

有没有比这更简单的

w=4; [[ $1 != "" ]] && w=$1
Run Code Online (Sandbox Code Playgroud)

gue*_*est 7

使用形式的参数扩展 ${parameter:-word}

${parameter:-word}使用默认值。如果参数未设置或为空,则替换单词的扩展。否则,替换参数的值。

w=${1:-4}
Run Code Online (Sandbox Code Playgroud)

省略冒号会导致仅对未设置的参数进行测试。

w=${1-4}
Run Code Online (Sandbox Code Playgroud)