Bash Shell脚本字符串截断

来源:互联网 发布:重庆网络机柜cqwsjg 编辑:程序博客网 时间:2024/06/05 00:11

1.字符截断:
如果是一般路径的字符截断可以用basenamedirname这两个工具:
basename可以从一个文件路径中截一个文件名
例如:

$ basename /home/file.tar
file
.tar


dirname可以从一个文件路径中截到一个目录路径
例如:

$ dirname /home/file.tar
/home


不使用外部工具进行字符截断
bash有自带的功能来对变量进行字符截断,一般使用"##", "#", "%%", "%", "*" 组合来实现。例如:

$ string=hellowbashshell
$ echo ${string
##*sh}
ell
$ echo ${string
#*sh}
shell
$ echo ${string
%%sh*}
hellowba
$ echo ${string
%sh*}
hellowbash


"#"表示从字符开始部分除去,一旦匹配则立即除去
"##"表示从字符开始部分除去,会搜整个字符串最长的和的匹配来除去
"%"表示从字符结束的部分除去,一旦匹配成公则立即除去
"%%"表示从字符结束的部分开始除去,会搜寻整个字符穿中最长的匹配来除去
"*"统配符,一般与“##”或"#"联用时放在搜索字符串的左边,例如:${String#*sh}(在sh的左边),与"%%"或"%"联用时会放在匹配字符串的右边,例如:${String%%sh*}

常用技巧:

在路径中取文件名:${path##*/}(与basename相同功能)
在路径中取目录路径:${path%/*}(与dirname相同功能)
取文件的扩展名:${path##*.}

 

原创粉丝点击