“: - ”在变量声明中做了什么?

时间:2013-09-24 04:21:39

标签: bash

我的任务是控制一些bash脚本,并查看它们我会遇到以下表示法:

INITPATH=${INITPATH:-"include"}

据我所知,这与a = a || b类似,并且如果未设置环境变量,则允许设置默认值?

我想我只是想对此进行一些澄清,以及“: - ”是否可以分解或在其他情况下使用。我还没有碰到它浏览各种Bash文档。

2 个答案:

答案 0 :(得分:3)

来自manual

  

${parameter:-word}

     

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

在您的示例中,如果INITPATH未设置/ null,则设置为include

答案 1 :(得分:0)

这包含了大部分替代

的方法
echo "$\{var}"
echo "Substitute the value of var."


echo "1 - $\{var:-word}"
echo "If var is null or unset, word is substituted for var. The value of var does not change."


echo "2- $\{var:=word}"
echo "If var is null or unset, var is set to the value of word."


echo "5-$\{var:?message}"
echo "If var is null or unset, message is printed to standard error. This checks that variables are set correctly."


echo "3 - $\{var:+word}"
echo "If var is set, word is substituted for var. The value of var does not change."