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
$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
相关文章推荐
- (三)jmeter 用户自定义变量和http默认请求
- 【Linux学习笔记】25:用户自定义变量
- 支持用户自定义变量的PowerBuilder表达式求值
- Shell基础-Bash变量-用户自定义变量
- linux 命令系列之 用户自定义变量(46)
- Shell基础-Bash变量-用户自定义变量
- 用户自定义变量 内置变量
- Linux学习日记 —— 10.4.1 Shell基础-Bash变量-用户自定义变量
- mysql 用户自定义变量
- jmeter之HTTP取样器、Webserivce采样器、Debug Sampler、Cookie、header、授权、jdbc连接、用户自定义属性和变量
- Jmeter之用户自定义变量
- 如何在.Net的MySqlCommand里面使用MySql用户自定义变量?
- Jmeter配置元件-用户自定义变量
- 自学Linux Shell6.2-用户自定义环境变量
- mysql 用户自定义变量
- bash变量-用户自定义变量和环境变量/
- Linux学习--第十天--bash脚本、用户自定义变量、环境变量、位置参数变量、预定义变量、标准输入输出、wc、history、dd、PS1
- Linux学习之用户自定义变量
- 用户自定义变量
- mysql中关于用户自定义的变量