2016-04-24 67 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