2016-04-24 66 views
3

我有,我會通過一些的bash腳本,我發現代碼使用以下構建了許多變數:

ID1="{ID2:?}" 

. ${PATH1:?}/file1 

是否有人可以幫助我瞭解什麼?做這個?

+2

您確定定義'ID1'的行在這裏是正確的嗎?不缺少'$'?它會更有意義,因爲'ID1 =「$ {ID2:?}」;就像這樣,它可能是一個錯誤。 –

+0

(... btw,即使在相同的語言中,'?'可能意味着許多不同的上下文中有很多不同的東西,這就是爲什麼讓問題的標題指定上下文是一件好事;例如, '$ {foo#?}'或'$ {foo%?}'會完全不同,'echo foo?'會有另一個含義。 –

回答

5

在此上下文中,如果參數未設置或爲空,則會引發錯誤。通常,您會在?之後看到自定義錯誤消息,但如果沒有,則會打印一條通用錯誤消息。

$ unset id2 
$ id1=${id2:?} 
bash: id2: parameter null or not set 
$ id1=${id2:?nope} 
bash: id2: nope 
$ id2=9 
$ id1=${id2:?} 
$ echo $id1 
9