Bash中的字符串截取
2017-11-26 14:47
260 查看
看到这样一句脚本
起初不知道什么意思, 后来才发现, 这是在截取文件名.
假如我们的脚本叫
那么:
那么为什么
这就要说下bash中的子串截取规则了:
那么对于
删除从开始 到最后一个
事实上写成
那么来做个实验, 验证下上述表格中的观点:
还有一种按索引和长度截取的方法:
参考:
http://blog.csdn.net/finewings/article/details/5718133
欢迎补充指正!
APP_NAME="${0##*[\\/]}"
起初不知道什么意思, 后来才发现, 这是在截取文件名.
假如我们的脚本叫
test.sh:
#!/bin/bash appName="${0##*[\\/]}" echo $appName
那么:
# 以相对路径运行 [root@localhost Downloads]# ./test.sh test.sh # 以绝对路径运行 [root@localhost Downloads]# /root/Downloads/test.sh test.sh
那么为什么
${0##*[\\/]}可以截取到文件名呢?
这就要说下bash中的子串截取规则了:
语法 | 说明 |
---|---|
${varible#*str} | 从左往右,删除最短的一个以string结尾的子串,即截取第一个string子串之后的字符串 |
${varible##*str} | 从左往右,删除最长的一个以string结尾的子串,即截取最后一个string子串之后的字符串 |
${varible%str*} | 从右往左,删除最短的一个以string开头的子串,即截取最后一个string子串之前的字符串 |
${varible%%str*} | 从右往左,删除最长的一个以string开头的子串,即截取第一个string子串之前的字符串 |
${0##*[\\/]}而言, 就是取
$0(也就是键入的脚本名, 无论以什么路径),
删除从开始 到最后一个
/或者
\, 也就是只留文件名, 不留路径, 即上述输出的
test.sh.
事实上写成
${0##*/}也可以.
那么来做个实验, 验证下上述表格中的观点:
# 定义字符串testStr [root@localhost Downloads]# testStr=0123abc456789abcdef.xyz # 从左往右, 删除0123abc [root@localhost Downloads]# echo ${testStr#*abc} 456789abcdef.xyz # 从左往右, 删除0123abc456789abc [root@localhost Downloads]# echo ${testStr##*abc} def.xyz # 从右往左, 删除abcdef.xyz [root@localhost Downloads]# echo ${testStr%abc*} 0123abc456789 # 从右往左, 删除abc456789abcdef.xyz [root@localhost Downloads]# echo ${testStr%%abc*} 0123 [root@localhost Downloads]#
还有一种按索引和长度截取的方法:
${varible:startIndex:len}, 类似于js中的substr方法:
[root@localhost Downloads]# testStr=123abc456 # 从索引2开始, 取3个字符 [root@localhost Downloads]# echo ${testStr:2:3} 3ab
参考:
http://blog.csdn.net/finewings/article/details/5718133
欢迎补充指正!
相关文章推荐
- bash字符串截取
- bash 截取字符串
- bash字符串截取
- bash shell字符串的截取
- Shell(Bash) - 文件名.字符串截取
- [Linux]:Bash shell字符串截取及命令替换
- Bash中的字符串截取
- [Linux]:bash shell字符串的截取
- 计算字符串长度及截取字符串
- C# 按指定(字节)长度截取字符串
- SQL Server2000字符串截取实例
- JavaScript基础 substr(startIndex, length) 在原始字符串中,截取并返回一个子字符串
- PHP截取字符串,获取长度,获取字符位置的函数
- 中文字符串截取(mb_substr)和获取字数(mb_strlen)
- Nstring 字符串的截取 匹配字符串 分割字符串
- 20、JAVA 中字符串的截取,要求不能截取半个汉字
- C#之从当前的字符串中移除头部和尾部的空白字符和截取字符(字符串的位数)
- mysql 字符串截取
- JavaScript —— JS截取字符串substr 和 substring方法的区别
- JS正确截取单字节和双字节混和字符串的方法