冒号突破": - "在bash中意味着什么

Ste*_*ios 35 syntax bash shell semantics

结果是想要的; 经过一番试验和错误.我不明白"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
Run Code Online (Sandbox Code Playgroud)

Gil*_*not 48

这是一个参数扩展,它意味着如果第三个参数为null或未设置,请将其替换为后面的内容: -

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

$
Run Code Online (Sandbox Code Playgroud)

如果变量为null,还有另一个类似的PE分配值:

$ x=
$ echo ${x:=1}
1
$ echo $x
1
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢斯普尼克的解释。 (2认同)
  • 与其说“void”,不如说“unset or null”更准确。 (2认同)