这项任务是做什么的?

时间:2015-08-04 04:53:36

标签: shell environment-variables

我正在浏览一个朋友的代码,他有这条线:

dist=${dist:?Must set dist environment variable}

这条线做什么?如何评估?是否有此类任务的文件?

由于

1 个答案:

答案 0 :(得分:3)

使用man bash解释得非常好 - 或者在在线Bash手册中找到parameter expansion。只需在终端提示符下输入man bash,然后在:?上搜索即可找到:

  

$ {parameter:?word}
如果为空或未设置则显示错误。如果   参数为null或未设置,扩展单词(或消息到   如果单词不存在则该效果被写入标准   错误和shell,如果不是交互式,则退出。否则,   参数值被替换。

实施例

dist未设置时,让我们运行该命令:

$ dist=${dist:?Must set dist environment variable}
bash: dist: Must set dist environment variable

因此,正如文档所述,dist未设置的事实导致显示错误消息。

现在,让我们为dist分配一个值并运行相同的命令:

$ dist=1
$ dist=${dist:?Must set dist environment variable}
$ echo $dist
1

由于为dist分配了值,因此不显示任何错误消息,dist的值保持不变。