我正在浏览一个朋友的代码,他有这条线:
dist=${dist:?Must set dist environment variable}
这条线做什么?如何评估?是否有此类任务的文件?
由于
答案 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
的值保持不变。