shell变量的相关操作(2)
2012-01-29 15:35
302 查看
变量的字符串长度${#var}
${#*}和${#@}表示位置参数的个数.
对于数组来说, ${#array[*]}和${#array[@]}表示数组中元素的个数.
${var#Pattern}, ${var##Pattern}
从变量$var的开头删除最短或最长匹配$Pattern 的子串.
${var%Pattern}, ${var%%Pattern}
从变量$var的结尾删除最短或最长匹配$Pattern 的子串
${var:pos} 变量var 从位置pos 开始扩展
${var:pos:len}
变量var 从位置pos 开始, 并扩展len 个字符.
${var/Pattern/Replacement}
使用Replacement 来替换变量var 中第一个匹配Pattern的字符串。如果省略Replacement , 那么第一个匹配Pattern的字符串将被替换为空, 也就是被删除了.
${var//Pattern/Replacement}
全局替换. 所有在变量var 匹配Pattern的字符串, 都会被替换为Replacement。和上边一样, 如果省略Replacement , 那么所有匹配Pattern的字符串, 都将被替换为空, 也就是被删除掉.
${var/#Pattern/Replacement}
如果变量var 的前缀匹配Pattern, 那么就使用Replacement 来替换匹配到Pattern的字符串.
${var/%Pattern/Replacement}
如果变量var 的后缀匹配Pattern, 那么就使用Replacement 来替换匹配到Pattern的字符串.
${!varprefix*}, ${!varprefix@}
匹配所有之前声明过的, 并且以varprefix 开头的变量.
$ username4=abcde $ echo ${#username4} 5注:
${#*}和${#@}表示位置参数的个数.
对于数组来说, ${#array[*]}和${#array[@]}表示数组中元素的个数.
${var#Pattern}, ${var##Pattern}
从变量$var的开头删除最短或最长匹配$Pattern 的子串.
$ user="/usr/local/bin/abc" $ echo ${user#/} usr/local/bin/abc $ echo ${user##*/} abc $ var1=abcd12345abc6789 $ echo ${var1#a*c} d12345abc6789 $ echo ${var1##a*c} 6789 $ echo ${var1##b*c} #字符串不以b开头,所以不匹配 abcd12345abc6789
${var%Pattern}, ${var%%Pattern}
从变量$var的结尾删除最短或最长匹配$Pattern 的子串
$ echo ${var1%b*9} abcd12345a $ echo ${var1%%b*9} a $ echo ${var1%%b*8} #字符串不以8结尾,所以不匹配 abcd12345abc6789
${var:pos} 变量var 从位置pos 开始扩展
$ echo ${var1:5} 2345abc6789 $ echo ${var1:-5} #直接写-5无效 abcd12345abc6789 $ echo ${var1: -5} #在-5前加空格 c6789 $ echo ${var1: (-5)} c6789
${var:pos:len}
变量var 从位置pos 开始, 并扩展len 个字符.
$ echo ${var1:3:4} d123 $ echo ${var1:(-3):2} 78
${var/Pattern/Replacement}
使用Replacement 来替换变量var 中第一个匹配Pattern的字符串。如果省略Replacement , 那么第一个匹配Pattern的字符串将被替换为空, 也就是被删除了.
${var//Pattern/Replacement}
全局替换. 所有在变量var 匹配Pattern的字符串, 都会被替换为Replacement。和上边一样, 如果省略Replacement , 那么所有匹配Pattern的字符串, 都将被替换为空, 也就是被删除掉.
$ echo ${var1/abc/xyz} xyzd12345abc6789 $ echo ${var1//abc/xyz} xyzd12345xyz6789 $ echo ${var1/abc/} d12345abc6789 $ echo ${var1//abc/} d123456789
${var/#Pattern/Replacement}
如果变量var 的前缀匹配Pattern, 那么就使用Replacement 来替换匹配到Pattern的字符串.
${var/%Pattern/Replacement}
如果变量var 的后缀匹配Pattern, 那么就使用Replacement 来替换匹配到Pattern的字符串.
$ echo ${var1/#abc/xyz} xyzd12345abc6789 $ echo ${var1/#bc/xyz} #字符串不以bc开头,所以不匹配 abcd12345abc6789 $ echo ${var1/%789/xyz} abcd12345abc6xyz $ echo ${var1/%78/xyz} #字符串不以78结尾,所以不匹配 abcd12345abc6789
${!varprefix*}, ${!varprefix@}
匹配所有之前声明过的, 并且以varprefix 开头的变量.
$ xyz23=whatever $ xyz24= $ a=${!xyz*} $ echo $a xyz23 xyz24 $ b=${!xyz@} $ echo $b xyz23 xyz24
相关文章推荐
- shell脚本中的变量及相关操作
- Shell运算符号与变量相关操作基础
- 小苏的Shell编程笔记之二--Shell变量及其相关操作
- shell脚本中的变量及相关操作
- Shell 变量相关操作
- Linux Shell编程(二)--Shell变量及相关操作
- shell变量的相关操作(1)
- 第二章 Shell变量及相关操作
- shell变量的字符串操作
- Linux:shell变量功能和Bash shell的操作环境
- shell - Bash中对变量的操作
- shell变量与字符串操作
- 每篇半小时1天入门MongoDB——2.MongoDB环境变量配置和Shell操作
- Shell变量的定义与赋值操作注意事项
- Go 环境变量相关操作
- 通过脚本学shell之变量操作
- shell变量扩展与字符串操作
- PhpForm表单相关的超全局变量操作
- linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)
- shell文件操作相关命令