可替换的参数:处理或/并扩展变量
-
${parameter}
-
和$parameter是相同的,都是表示变量parameter的值。在一些环境中,使用${parameter}比较不会引起误解.
可以把变量和字符串连接.
1 your_id=${USER}-on-${HOSTNAME}
2 echo "$your_id"
3 #
4 echo "Old \$PATH = $PATH"
5 PATH=${PATH}:/opt/bin #在脚本的生存期内,能额外增加路径/opt/bin到环境变量$PATH中去.
6 echo "New \$PATH = $PATH"
${parameter-default},
${parameter:-default}
-
如果变量没有被设置,使用默认值。
1 echo ${username-`whoami`}
2 # 如果变量$username还没有被设置,则把命令`whoami`的结果赋给该变量.
${parameter-default}和${parameter:-default}几乎是相等的。它们之间的差别是:当一个参数已被声明,但是值是NULL的时候两者不同.
1 #!/bin/bash
2 # param-sub.sh
3
4 # 变量是否被声明,
5 #+ 即使它的值是空的(null)
6 #+ 也会影响是否使用默认值.
7
8 username0=
9 echo "username0 has been declared, but is set to null."
10 echo "username0 = ${username0-`whoami`}"
11 # 不会有输出.
12
13 echo
14
15 echo username1 has not been declared.
16 echo "username1 = ${username1-`whoami`}"
17 # 会输出默认值.
18
19 username2=
20 echo "username2 has been declared, but is set to null."
21 echo "username2 = ${username2:-`whoami`}"
22 # ^
23 # 和上面一个实例比较.
24 # 有输出是因为:-比-多一个测试条件.
25
26
27 #
28
29 # 再来一次:
30
31 variable=
32 # 变量已声明,但被设置了空值(null).
33
34 echo "${variable-0}" # (没有输出)
35 echo "${variable:-1}" # 1
36 # ^
37
38 unset variable
39
40 echo "${variable-2}" # 2
41 echo "${variable:-3}" # 3
42
43 exit 0默认值结构可以在脚本中提供一个没有传递命令行参数时的默认值.
-
${variable:=value}不但使用默认值进行替换,而且将默认值赋给该变量。该形式在变量替换后同时把值value符给变量variable。
例:$echo Hello $UNAME
结果显示:Hello
$echo Hello ${UNAME:=there}
结果显示:Hello there
$echo $UNAME
结果显示:there
${variable: +value}只有当变量已赋值时才用指定值替换,变量variable已赋值时,其值才用value替换,否则不进行任何替换。
例:$ERROPT=A
$echo ${ERROPT: +"Error tracking is acitive"}
结果显示:Error tracking is acitive
$ERROPT=
$echo ${ERROPT: +"Error tracking is acitive"}
结果显示: (空)
参考:http://www.linuxidc.com/Linux/2008-01/10285.htm
相关文章推荐
Linux部分精彩文章推荐