Shell 这个作业是做什么的?

Shell 这个作业是做什么的?,shell,environment-variables,Shell,Environment Variables,我查了一个朋友的密码,他说: dist=${dist:?Must set dist environment variable} 这条线在干什么?如何评估?是否有此类作业的相关文件 感谢使用man bash对其进行了很好的解释,或者可以在在线bash手册中找到。只需在终端提示下输入manbash,然后搜索:?,您将发现: ${参数:?word}如果为Null或未设置,则显示错误。如果 参数为null或未设置,表示word(或消息)的扩展 该效果(如果单词不存在)写入标准 错误,如果shell不是

我查了一个朋友的密码,他说:

dist=${dist:?Must set dist environment variable}
这条线在干什么?如何评估?是否有此类作业的相关文件


感谢使用
man bash
对其进行了很好的解释,或者可以在在线bash手册中找到。只需在终端提示下输入
manbash
,然后搜索
:?
,您将发现:

${参数:?word}
如果为Null或未设置,则显示错误。如果 参数为null或未设置,表示word(或消息)的扩展 该效果(如果单词不存在)写入标准 错误,如果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
的值保持不变。

谢谢。。。有意义:)请注意,您也可以使用
:${dist:?必须设置dist环境变量}
,而无需执行自赋值。