您的位置:首页 > 运维架构 > Shell

shell编程-用户自定义变量

2011-08-04 15:10 267 查看
shell编程中变量的一种-用户自定义变量
$echo Hello $UNAME

结果显示:Hello

$echo Hello ${UNAME: -there}

结果显示:Hello there

$echo $UNAME

结果显示: (空)

$UNAME=John

$echo Hello ${UNAME: -there}

结果显示:Hello John

可以看出,变量替换时将使用命令行中定义的默认值,但变量的值并没有因此而改变。另外一种替换的方法是不但使用默认值进行替换,而且将默认值赋给该变量。其形式如下:

${variable:=value}

该形式在变量替换后同时把值value符给变量variable。

$echo Hello $UNAME

结果显示:Hello

$echo Hello ${UNAME:=there}

结果显示:Hello there

$echo $UNAME

结果显示:there

$UNAME=John

$echo Hello ${UNAME:-there}

结果显示:Hello John

${variable: +value}

只有变量variable已赋值时,其值才用value替换,否则不进行任何替换,例如:

$ERROPT=A

$echo ${ERROPT: +"Error tracking is acitive"}

结果显示:Error tracking is acitive

$ERROPT=

$echo ${ERROPT: +"Error tracking is acitive"}

结果显示: (空)

我们还可以使用错误检查的条件进行变量替换:

${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

$expr 4*5

系统将会报错,因为Shell看到"*"将会首先进行文件名替换。正确形式为:

$expr 4 \* 5

结果显示:20

------------------结果错误,可能跟使用的版本有关系--------------------------------

运算次序是先乘除后加减,若要改变运算次序,必须使用"`"号,如:

$int=`expr 5 + 7`

$expr $int/3

结果显示:4

或者:

$expr `expr 5+7`/3

结果显示:4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: