【问题标题】:What does this assignment do?这个任务有什么作用?
【发布时间】:2015-08-04 04:53:36
【问题描述】:

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

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

这条线在做什么?将如何评估?是否有此类作业的任何文档?

谢谢

【问题讨论】:

    标签: shell environment-variables


    【解决方案1】:

    使用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} 而不进行自分配。
    猜你喜欢
    • 2021-12-29
    • 2023-03-24
    • 2016-10-12
    • 2015-02-14
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多