2014-12-12 10 views
24

Il risultato è quello desiderato; dopo un po 'di prove ed errori. Non capisco cosa siano "2: -" e "3: -" do/mean. Qualcuno può spiegare.Cosa significa "due punti": in bash

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

Grazie

Stelios

+1

http://tldp.org/LDP/abs/html/string-manipulation.html cercate '$ {stringa: posizione: lunghezza}' –

+4

Non si ottiene Marc B –

+1

Questa domanda è più utile in quanto Google non cerca: - –

risposta

31

È un'espansione parametro, significa se il terzo argomento è nullo o, sostituirlo con quello che c'è dopo: -

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

$ 

C'è anche un altro PE simile che assegna il valore se la variabile è nullo:

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

check http://wiki.bash-hackers.org/syntax/pe

+1

Grazie per la spiegazione sputnick. – Stelios

+1

Piuttosto che "vuoto", è più preciso dire "non impostato o nullo". – chepner