2014-12-12 19 views
24

Kết quả là dấu gạch ngang mong muốn; sau một chút thử và sai. Tôi không hiểu ý nghĩa của từ "2: -" và "3: -". Ai đó có thể giải thích.Dấu gạch ngang dấu hai chấm ": -" có nghĩa là gì trong 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 

Cảm ơn

Stelios

+1

http://tldp.org/LDP/abs/html/string-manipulation.html tìm kiếm '$ {string: Vị trí: chiều dài}' –

+4

Bạn không nhận được nó Marc B –

+1

Câu hỏi này hữu ích hơn vì google không tìm kiếm: - –

Trả lời

31

Đó là một mở rộng tham số, nó có nghĩa là nếu đối số thứ ba là null hoặc unset, thay thế nó với những gì sau: -

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

$ 

Có cũng một PE tương tự khác gán giá trị nếu biến là null:

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

Kiểm tra http://wiki.bash-hackers.org/syntax/pe

+1

Cảm ơn lời giải thích. – Stelios

+1

Thay vì "void", chính xác hơn là nói "unset hoặc null". – chepner

Các vấn đề liên quan