2014-12-12 15 views
24

Wynik jest tym, który jest pożądany; po odrobinie prób i błędów. Nie rozumiem, co oznaczają "2: -" i "3: -". Czy ktoś może wyjaśnić.Co oznacza kreska dwukropka ": -" w bashie

#!/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 

Dzięki

Stelios

+1

http://tldp.org/LDP/abs/html/string-manipulation.html szukać '$ {ciąg: Pozycja: Długość}' –

+4

Nie dostaniesz go Marc B –

+1

To pytanie jest bardziej przydatne, ponieważ google nie wyszukuje: - –

Odpowiedz

31

Jest to ekspansja parametr, to znaczy jeżeli trzeci argument jest null lub unieważnione, zastąpić go co po: -

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

$ 

Jest także inny podobny PE, który przypisuje wartość, jeśli zmienna ma wartość null:

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

Sprawdź http://wiki.bash-hackers.org/syntax/pe

+1

Dziękuję za wyjaśnienie sputnick. – Stelios

+1

Zamiast "void", dokładniej jest powiedzieć "unset or null". – chepner