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

shell基础变量扩展学习

2013-05-24 23:20 441 查看
好久前学习了变量的扩展,现在全忘光了,决定总结下。

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


本文出自 “xiaolangit” 博客,请务必保留此出处http://xiaolangit.blog.51cto.com/3343422/1209449
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: