【发布时间】:2015-08-04 04:53:36
【问题描述】:
我正在浏览一个朋友的代码,他有一行:
dist=${dist:?Must set dist environment variable}
这条线在做什么?将如何评估?是否有此类作业的任何文档?
谢谢
【问题讨论】:
标签: shell environment-variables
我正在浏览一个朋友的代码,他有一行:
dist=${dist:?Must set dist environment variable}
这条线在做什么?将如何评估?是否有此类作业的任何文档?
谢谢
【问题讨论】:
标签: shell environment-variables
使用man bash 可以很好地解释它——或者在在线 Bash 手册中找到parameter expansion。只需在终端提示符下输入man bash 并搜索:? 即可找到:
${parameter:?word}
如果为 Null 或未设置则显示错误。 如果 参数为空或未设置,单词的扩展(或消息到 如果单词不存在,则该效果)被写入标准 错误和外壳,如果它不是交互式的,则退出。否则,该 参数的值被替换。
让我们在 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 的值保持不变。
【讨论】:
: ${dist:?Must set dist environment variable} 而不进行自分配。