bash中的变量修饰符
时间:2010-04-05 来源:wing731
变量修饰符
修饰符 用来测试和修改变量。
修饰符 |
值 |
${variable:-word} |
如果变量variable已被设置且非空,则代入它的值。否则,代入word |
${variable:=word} |
如果变量variable已被设置且非空,则代入它的值。否则,代入word,始终代入 variable的值,位置参量不能用这种方式赋值 |
${variable:+word} |
如果变量variable已被设置且非空,则代入word。否则,什么都不代入 |
${variable:?word} |
如果变量variable已被设置且非空,则代入它的值。否则,输出word并从shell退出。如 果省略word,就会显示信息:parameter null or not set |
${variable:offset} |
获得变量variable值中位置从offset开始的子串,偏移为从0到末尾 |
${variable:offset:length} |
获得变量variable值中位置从offset开始的子串,开始长度为length的子串 |
-
Example
- 临时替换为默 认
[root@wingwu ~]# fruit=peach
[root@wingwu ~]# echo ${fruit:-plum}
peach
[root@wingwu ~]# echo ${newfruit:-apple}
apple
[root@wingwu ~]# echo $newfruit - 永久替换为默认
[root@wingwu ~]# name=
[root@wingwu ~]# echo ${name:=Peter}
Peter
[root@wingwu ~]# echo $name
Peter - 临时替换值
[root@wingwu ~]# foo=grapes
[root@wingwu ~]# echo ${foo:+pears}
pears
[root@wingwu ~]# echo $foo
grapes
* 基于默认值创建错误信息
{{{#!bash
[root@wingwu ~]# echo ${namex:?"namex is undefined"}
-bash: namex: namex is undefined
[root@wingwu ~]# echo ${namex?}
-bash: namex: parameter null or not set
[root@wingwu ~]# echo $?
1 - 创建子串
[root@wingwu ~]# var=notebook
[root@wingwu ~]# echo ${var:0:4}
note
[root@wingwu ~]# echo ${var:4:4}
book
[root@wingwu ~]# echo ${var:0:2}
no