栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

变量名后的'-'(破折号)在这里做什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

变量名后的'-'(破折号)在这里做什么?

a

${...}
中的变量称为“参数扩展”。在在线手册或实际手册中
搜索该术语(第792行)。 该形式是在形式上相似。仅在展开前一行(行810)说明了差异:
${var-}``${var:-}``:-


… bash测试未设置或为null的参数。省略冒号只会对未设置的参数进行测试。

因此,这种形式是测试仅当变量被复位( 不为空),并且替换整个扩张

${...}
为后的值
-
,在这种情况下是

因此,

${var-}
变为:

  1. 当var具有值(而不是null)时,var的值。
  2. 另外,当var为null:时,var的值(冒号:丢失!)
    ''
    也因此为null。
  3. ''
    如果未设置var ,则-之后的值(在这种情况下为null )。

所有这些实际上就是:

  1. 展开为
    ''
    var未设置或为null时。
  2. 扩展到var的值(当var具有值时)。

因此,扩展没有改变var的值,也没有扩展,只是在shell

nounset
设置了选项的情况下避免了可能的错误。

此代码将在以下两种用途上均停止

$var

#!/bin/bashset -uunset varecho "variable $var"[[ $var ]] && echo "var set"

但是,此代码将正确运行:

#!/bin/bashset -uunset varecho "variable ${var-}"[[ ${var-} ]] && echo "var set"


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号