#!/bin/bash
#======================================================
#文件:var_test.sh
#作者:daojoo, daojoo@qq.com
#作用:测试变量设置时的不同模式
#版本:1.0
#日期:2012年03月09日 
      星期五 10时41分39秒
#======================================================
 
 
 
#---------------变量设置时的不同模式--------------------
#var-name=value        
      设置实际值到var-name
#var-name+value        
      如果设置了var-name,则用value代替其值
#var-name:-value    
      如果未设置var-name,则用value代替其值
#var-name:=value    
      如果未设置var-name,则设置其值为value
#var-name?value        
      如果未设置var-name,显示系统错误信息
#var-name:?value    
      如果未设置var-name,显示用户错误信息
#---------------------------------------------------
 
 
#var=value    设置了
#var=        
      未设置
#var=""        
      未设置
 
 
#---------------------------------------------------
#var-name=value        
      设置实际值到var-name
echo "\${var1=value1} : ${var1=value1}"
echo 
      "\${var1} : ${var1}"
#输出:
#${var1=value1} : 
      value1
#${var1} : value1
#---------------------------------------------------
 
 
#---------------------------------------------------
#var-name+value        
      如果设置了var-name,则用value代替其值
#设置了,则代替,代替的是${var2+value2new}的值,而不是变量var2的值
var2=value2
echo 
      "\${var2+value2new} : 
      ${var2+value2new}"
echo 
      "\${var2} : 
      ${var2}"        #注意是代替,而不是给var2赋值,所以var2仍然是空值
#输出:
#${var2+value2new} : 
      value2new
#${var2} : 
      value2
 
#未设置,则不代替
echo "\${var22+value22new} : 
      ${var22+value22new}"
echo 
      "\${var22} : ${var22}"
#输出:
#${var22+value22new} :
#${var22} :
#---------------------------------------------------
value2new
 
#---------------------------------------------------
#var-name:-value    
      如果未设置var-name,则用value代替其值
#未设置,则代替,代替的是${var3:-value3new}的值,而不是变量var3的值
echo "\${var3:-value3new} : ${var3:-value3new}"
echo "\${var3} : 
      ${var3}"        #注意是代替,而不是给var3赋值,所以var3仍然是空值
#输出:
#${var3:-value3new} : 
      value3new
#${var3} 
      :
 
#设置了,则不代替
var33=value33
echo "\${var33:-value33new} : 
      ${var33:-value33new}"
echo 
      "\${var33} : ${var33}"
#输出:
#${var33:-value33new} : value33
#${var33} 
      : value33
#---------------------------------------------------
 
 
#---------------------------------------------------
#var-name:=value    
      如果未设置var-name,则设置其值为value
#如果未设置,则为变量赋值
echo "\${var4:=value4new} : ${var4:=value4new}"
echo "\${var4} : 
      ${var4}"        #var4:=value4new相当于为var4赋值,此时变量var4的值已经为value4new
#输出:
#${var4:=value4new} : 
      value4new
#${var4} : 
      value4new
 
#如果设置了,则不再赋值,而是用其原来的值
var44=value44
echo "\${var44:=value44new} : 
      ${var44:=value44new}"
echo 
      "\${var44} : ${var44}"
#输出:
#${var44:=value44new} : value44
#${var44} 
      : value44
#---------------------------------------------------
 
 
#---------------------------------------------------
#var-name?value        
      如果未设置var-name,显示系统错误信息
#var-name:?value    
      如果未设置var-name,显示用户错误信息
#未设置,则报错
#echo 
      "\${var5?value5new} : ${var5?value5new}"    
      #系统错误信息
#输出:./bashsupport.sh: line 97: 
      var5: value5new
#echo "\${var6:?value6new} 
      : ${var6:?value6new}"    
      #用户错误信息,注释掉上面一条语句,才能执行到此
#输出:./bashsupport.sh: line 99: var6: 
      value6new
 
#设置了,则输出变量的值
var55=var55
echo 
      "\${var55?value55new} : 
      ${var55?value55new}"
#输出:${var55?value55new} : var55
var66=var66
echo 
      "\${var66?value66new} : 
      ${var66?value66new}"
#输出:${var66?value66new} : var66
#---------------------------------------------------Shell编程 之 变量设置时的不同模式,码迷,mamicode.com
原文地址:http://www.cnblogs.com/daojoo/p/3698844.html