Shell 变量的操作方法

    在Shell中,经常会用到:=和:-这样的操作符。

    这两个操作符功能很相似,下面简单比较下:

    

#color="red"
echo "color is ${color}"
//这样应该会打印color is (空白)

稍微改造下:
echo "color is ${color:-"no color"}"
//这样应该会打印color is no color
或者
echo "color is ${color:="no color"}"
//这样同样会打印color is no color

  

   但是假如继续打印color变量,会出现什么情况呢?

  

//如果之前使用:-来赋值的话
echo ${color} 会继续打印空白
//而如果之前使用:=来赋值的话
echo ${color} 会打印no color

    这样可以看明白了吗?  :=与:-同样为当变量未定义时的赋值语句,但前者是一个肯定的赋值,而后者只是一个简单的替换。

     同样看下:?与?操作符的简单例子

     :? 如果未设置变量,则显示未定义用户错误信息

    ?   如果未设置变量,则显示系统错误信息

    例如:

echo ${color:?}
//这里会输出color: parameter null or not set

可以稍微改造下,让它输出更友好的信息
echo ${color:? "can't locate color"}
//这样会输出:color:  can't locate color

  

   想让变量成为一个常量(在shell中称为只读变量)的方法是在变量前加上readonly修饰符

   将变量导入环境变量的方法是使用export 变量名,清除它的方式是unset 变量名(这也同样适合于普通变量)

猜你喜欢

转载自bestchenwu.iteye.com/blog/1070178