分类:
2008-04-20 13:35:50
1 ${variable: -value}变量替换时将使用命令行中定义的默认值,但变量的值并没有因此而改变。variable是一变量值,value是变量替换使用的默认值
例:$echo Hello $UNAME
结果显示:Hello
$echo Hello ${UNAME: -there}
结果显示:Hello there
$echo $UNAME
结果显示: (空)
$UNAME=John
$echo Hello ${UNAME: -there}
结果显示:Hello John
2 ${variable:=value}不但使用默认值进行替换,而且将默认值赋给该变量。该形式在变量替换后同时把值value符给变量variable。
例:$echo Hello $UNAME
结果显示:Hello
$echo Hello ${UNAME:=there}
结果显示:Hello there
$echo $UNAME
结果显示:there
变量替换的值也可以是` `括起来的命令:
$USERDIR={$Mydir: -`pwd`}
3 ${variable: +value}只有当变量已赋值时才用指定值替换,变量variable已赋值时,其 值才用value替换,否则不进行任何替换。
例:$ERROPT=A
$echo ${ERROPT: +"Error tracking is acitive"}
结果显示:Error tracking is acitive
$ERROPT=
$echo ${ERROPT: +"Error tracking is acitive"}
结果显示: (空)
4 ${variable:?message}使用错误检查的条件进行变量替换,当变量variable已设置时,正常替换。否则消息message将送到标准错误输出(若此替换出现在shell程序中,那么该程序将终止)。
例:$UNAME=
$echo $ {UNAME:?"UNAME HAS NOT BEEN SET"}
结果显示:UNAME HAS NOT BEEN SET
$UNAME=Stephanie
$echo $ {UNAME:?"UNAME HAS NOT BEEN SET"}
结果显示:Stephanie
当没有指定message时,shell将显示一条默认的消息,例如:
$UNAME=
$echo $ {UNAME:?}
结果显示:sh:UNAME:parameter null or not set
5 特殊设置
readonly 变量名
有时我们想要在说明一个变量并对它设置为一个特定值后就不在改变它的值时,可以用下面的命令来保证一个变量的只读性:单独执行readonly可以显示所有的只读变量。
export 变量名
在任何时候,创建的变量都只是当前Shell的局部变量,所以不能被Shell运行的其他命令或Shell程序所利用,而export命令可以 将一个局部变量提供给Shell执行的其他命令使用,也可以在给变量赋值的同时使用export命令(export 变量名=变量值)。使用export说明的变量,在Shell以后运行的所有命令或程序中都可以访问到。