web-dev-qa-db-ja.com

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
34
Stelios

これはパラメータ拡張です。つまり、番目の引数がnullまたは未設定の場合、後続の引数に置き換えます:-

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

$

変数がnullの場合に値を割り当てる同様のPEもあります。

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

チェック http://wiki.bash-hackers.org/syntax/pe

46
Gilles Quenot