冒号破折号“ :-”在 bash 中的意思是什么

经过一些尝试和错误,结果是理想的。我不明白“2:-”和“3:-”是什么意思。谁能解释一下。

#!/bin/bash
pid=$(ps -ef | grep java | awk ' NR ==1 {print $2}')


count=${2:-30}  # defaults to 30 times
delay=${3:-10} # defaults to 10 second
mkdir $(date +"%y%m%d")
folder=$(date +"%y%m%d")
while [ $count -gt 0 ]
do
jstack $pid >./"$folder"/jstack.$(date +%H%M%S.%N)
sleep $delay
let count--
echo -n "."
done
27197 次浏览

这是一个参数展开,意思是 如果第三个参数为 null 或 unset,则将其替换为后面的参数:-

$ x=
$ echo ${x:-1}
1
$ echo $x


$

还有另一个类似的 PE,它在变量为 null 时赋值:

$ x=
$ echo ${x:=1}
1
$ echo $x
1

检查 http://wiki.bash-hackers.org/syntax/pe