shell:当var未设置或为null时,$ {var:-}的用途是什么?

汤姆·黑尔

在我的Linux Mint 17.2中,/etc/bash.bashrc我看到以下内容:

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

这是对该令牌的首次引用debian_chroot

为什么此代码使用${debian_chroot:-}而不是$debian_chroot

Bash的Shell参数扩展说:

$ {parameter:-word}

如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。

在这里,“单词”为null,那么为什么还要用null代替null?

马修·戴维(Matthew David)

该语法${debian_chroot:-}可防止外壳程序与之一起运行set -u(使用未定义变量时崩溃),并且debian_chroot在该位置未设置外壳程序。

希望普通的交互式外壳set -u(它很容易崩溃),但是在脚本中它可能非常有用。

要看到这个:

bash -c 'set -u; [ -z $a ]; echo ok'          # error
bash -c 'set -u; a=; [ -z $a ]; echo ok'      # ok
bash -c 'set -u; [ -z ${a:-} ]; echo ok'      # ok
bash -c 'set -u; a=; [ -z ${a:-} ]; echo ok'  # ok

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

/ var / run中* .pid文件的含义/用途是什么

来自分类Dev

var app = express();的用途是什么?在创建Node.Js应用程序的过程中?

来自分类Dev

@($ {VAR})是什么意思?

来自分类Dev

(+ var)是什么意思

来自分类Dev

使用$ {var}或$ var之间的最佳实践是什么?

来自分类Dev

“ if var”在python中是什么意思?

来自分类Dev

(int *)&var是什么意思?

来自分类Dev

/ var / crash /中的文件是什么?

来自分类Dev

$ {var / a / b / \ c}是什么意思?

来自分类Dev

/ var / www的默认权限是什么?

来自分类Dev

“ $ {var ,,}”中的逗号是什么意思?

来自分类Dev

Shell脚本中的'$ {var // / ++''是什么意思?

来自分类Dev

Shell脚本中<%= var_name%>的含义是什么

来自分类Dev

缓存var时,最好的调用方式是什么?

来自分类Dev

Shell函数定义中的括号()的用途是什么?

来自分类Dev

这对Lua意味着什么?“ var = var or”

来自分类Dev

“ $ var”和$ {var}有什么区别?

来自分类Dev

这对Lua意味着什么?“ var = var or”

来自分类Dev

ELF中SHT_NULL节的用途是什么?

来自分类Dev

在 python 日志记录中 Null 处理程序的用途是什么?

来自分类Dev

程序结束时scanf_s()的用途是什么?

来自分类Dev

什么是“ var”的缩写?

来自分类Dev

#var是做什么的?

来自分类Dev

#var是做什么的?

来自分类常见问题

Bash shell中的$ {var},“ $ var”和“ $ {var}”之间有什么区别?

来自分类Dev

“ var items = [Int]()”中括号的目的是什么?

来自分类Dev

在此volatile var示例中,空循环的目的是什么?

来自分类Dev

Javascript / jQuery变量,使用var的正确方法是什么?

来自分类Dev

在XML文件中指定var类型的原因是什么?

Related 相关文章

热门标签

归档