shell字符截断

脚本1阅读模式

如果是文件路径的进行字符截断可以用basename和dirname这两个工具
basename可以从一个文件路径中截一个文件名

  1. $ basename /root/lnmp/lnmp_install.sh
  2. lnmp_install.sh

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

  1. $ dirname /root/lnmp/lnmp_install.sh
  2. /root/lnmp

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

  1. $ teststring=www.linuxeye.com
  2. $ echo ${teststring#*.}
  3. linuxeye.com
  4. $ echo ${teststring##*.}
  5. com
  6. $ echo ${teststring%.*}
  7. www.linuxeye
  8. $ echo ${teststring%%.*}
  9. www

"#"表示从字符开始部分除去,一旦匹配则立即除去
"##"表示从字符开始部分除去,会搜整个字符串最长的和的匹配来除去
"%"表示从字符结束的部分除去,一旦匹配成公则立即除去
"%%"表示从字符结束的部分开始除去,会搜寻整个字符穿中最长的匹配来除去
"*"统配符

不利用工具取文件名和目录

  1. $ echo ${dir##*/}
  2. lnmp_install.sh
  3. $ echo ${dir%/*}
  4. /root/lnmp
  5. $ echo ${dir##*.}
  6. sh

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

Sat Jul 20 15:27:35 CST 2013

 
  • 本文由 yeho 发表于 2013-07-20
  • 转载请务必保留本文链接:https://linuxeye.com/341.html
shell字符串处理 脚本

shell字符串处理

字符串操作(长度,读取,替换) 表达式 含义 ${#string} $string的长度 ${string:position} 在$string中, 从位置$position开始提取子串 ${stri...