好久前学习了变量的扩展,现在全忘光了,决定总结下。
1.${变量-值}
如果变量不存在就用后面的值来替代。
例:
[root@localhost~]# qq=haha [root@localhost~]# yy=${qq:-123} [root@localhost~]# echo $yy haha [root@localhost~]# unset qq [root@localhost~]# yy=${qq-123} [root@localhost~]# echo $yy 123
2.${变量:-值}不存在或者为空。
例:
1.不存在时 [root@localhost~]# unset qq [root@localhost~]# yy=${qq:-123} [root@localhost~]# echo $yy 123 2.存在并为空时 [root@localhost~]# qq= [root@localhost~]# yy=${qq:-123} [root@localhost~]# echo $yy 123
4.${变量:=值} 效果同上!这里不再演示!
5.${变量:+值} 如果非空则取后面的值。
[root@localhost~]# qq=haha [root@localhost~]# yy=${qq:+wahaha} [root@localhost~]# echo $yy wahaha
6.${变量:?'xx'} 变量不存在或者为空,显示后面的字母。(通常定义报错信息)
[root@localhost~]# unset qq [root@localhost~]# yy=${qq:?'$qq is not found'} [root@localhost~]# echo $yy -bash: qq: $qq is not found
7.${变量:offset} 去除变量前N个字符,N为offset的值。
去除12345字符:
[root@localhost~]# qq=123456789 [root@localhost~]# yy=${qq:5} [root@localhost~]# echo $qq 6789
8.${变量:offset:长度} 先去掉,再取值:(offset为n,长度为取值)
例:我想要中间的5.
[root@localhost~]# qq=123456789 [root@localhost~]# yy=${qq:4:1} [root@localhost~]# echo $yy 5
9.${变量%模式}从后最短删除:
qq=`grep ^root /etc/passwd` echo $qq root:x:0:0:root:/root:/bin/bash yy=${qq%:*} echo $yy root:x:0:0:root:/root 这里少了:/bin/bash.!
10.${变量%%模式}从后最长删除。
echo $qq root:x:0:0:root:/root:/bin/bash yy=${aa%%:*} echo $yy root
11.${#变量}计算字母或字符长度。
qq=1234567 yy=${#qq} echo $yy 7
12.${变量#模式}从前最短删除。
[root@localhost ~]# qq=`grep ^root /etc/passwd` [root@localhost ~]# echo $qq root:x:0:0:root:/root:/bin/bash [root@localhost ~]# yy=${aa#^:} [root@localhost ~]# echo $yy x:0:0:root:/root:/bin/bash 最前面的root没有了!
13.${变量##模式}从前最长删除。
[root@localhost ~]# qq=`grep ^root /etc/passwd` [root@localhost ~]# echo $qq root:x:0:0:root:/root:/bin/bash [root@localhost ~]# yy=${qq##*:} [root@localhost ~]# echo $yy /bin/bash
14.${变量/符号1/符号2}将第一个符号换成第二个。
[root@localhost ~]# qq=`grep ^root /etc/passwd` [root@localhost ~]# echo $qq root:x:0:0:root:/root:/bin/bash [root@localhost ~]# yy=${qq/:/#} [root@localhost ~]# echo $yy root#x:0:0:root:/root:/bin/bash
15.${变量//符号1/符号2}将所有符号换成第二个。
[root@localhost~]# qq=`grep ^root /etc/passwd` [root@localhost~]# echo $qq root:x:0:0:root:/root:/bin/bash [root@localhost~]# yy=${aa//:/#} [root@localhost~]# echo $yy root#x#0#0#root#/root#/bin/bash
16.${变量/符号/}删除 把变量第一个符号删除.删除所有为${变量//符号/}
[root@localhost ~]# yy=${qq/:/} [root@localhost ~]# echo $yy rootx:0:0:root:/root:/bin/bash
转载于:https://blog.51cto.com/xiaolangit/1209449