Bash参数扩展如何工作?

时间:2010-10-07 12:54:28

标签: bash shell syntax

我正在尝试理解Bash脚本。我偶然发现了这个:

DIR=${1:-"/tmp"}

这是什么意思?

2 个答案:

答案 0 :(得分:8)

:-实际上是一个运算符,它表示如果未设置$1(脚本的第一个参数)或null,则使用/tmp作为{的值{1}}如果已设置,则将其值分配给$DIR

$DIR

的缩写
DIR=${1:-"/tmp"}

它可以与任何变量一起使用,而不仅仅是位置参数:

if [ -z $1 ]; then
        DIR='/tmp'
else
        DIR="$1"
fi

答案 1 :(得分:8)

该语法为parameter expansion

${parameter:-word}  
     

如果parameter未设置或为null,则word的扩展将被替换。否则,parameter的值将被替换。

因此,如果$1未设置或为空,则评估为"/tmp",否则评估为$1