$1
如果为空,它会设置默认值。
来自Bash 参考手册中的 3.5.3 Shell 参数扩展:
${参数:-字}
如果参数未设置或为空,则替换单词的扩展。否则,参数的值被替换。
例子
$ echo ${a:-"hello"}
hello
$ a="test"
$ echo ${a:-"hello"}
test
根据您的评论
谢谢,@fedorqui。原始变量为 POOL_SIZE=${1:-6}、REPRO_CHANCE=${2:-30}、BEST_FITS=${3:-70}。现在我想知道 ${POOL_SIZE:-6}、${REPRO_CHANCE:-30} 和 ${BEST_FITS:-70} 是否相同,为什么需要计算
如果你有
POOL_SIZE=${1:-6}
REPRO_CHANCE=${2:-30}
BEST_FITS=${3:-70}
这是因为POOL_SIZE
和应该包含REPRO_CHANCE
和的值。Any表示参数,例如来自脚本。因此,如果您有以下脚本:BEST_FITS
$1
$2
$3
$n
nth
$ cat a
#!/bin/bash
POOL_SIZE=${1:-6}
REPRO_CHANCE=${2:-30}
BEST_FITS=${3:-70}
echo "POOL_SIZE=$POOL_SIZE"
echo "REPRO_CHANCE=$REPRO_CHANCE"
echo "BEST_FITS=$BEST_FITS"
然后使用不同数量的参数执行它会产生:
$ ./a
POOL_SIZE=6
REPRO_CHANCE=30
BEST_FITS=70
$ ./a 2 2 2
POOL_SIZE=2
REPRO_CHANCE=2
BEST_FITS=2
$ ./a 24 2
POOL_SIZE=24
REPRO_CHANCE=2
BEST_FITS=70
我希望它说清楚。
还要注意${var:-value}
和${var-value}
不一样:${var:-word} 和 ${var-word} 有什么区别?.