Shell的备忘录1--变量的调用处理

kevin.Zhu 发布于:2013-1-16 16:02 分类:Shell  有 22 人浏览,获得评论 0 条  

编写一个shell脚本,想用从一个绝对路径得到一个文件名。

直接使用basename在脚本中,莫名地报了一个permission denied的错误。

就干脆想想如何通过字符串操作来解决。搜索整理了一下:

 

${var#pattern} 是要将变量值左边的最短 pattern 拿掉。

${var##pattern} 是要将变量值左边的最长 pattern 拿掉。

${var%pattern} 是要将变量值右边的最短 pattern 拿掉。

${var%%pattern} 是要将变量值右边的最长 pattern 拿掉。

${var%/*} 就是将最后一个 / 及其右边的内容拿掉。

${var##*/} 就是将最后一个 / 及其左边的内容拿掉。由此可以得到文件名。

${var/a/b}把var中的'a'替换为'b'

 

举例:

Shell代码  收藏代码

  1. pathname=/home/allen/shell/test.tar.gz  

  2. echo ${pathname}  

  3. echo ${pathname##/*/}  

  4. echo ${pathname#/*/}  

  5. echo ${pathname%.*}  

  6. echo ${pathname%%.*}  

  7. echo ${pathname/test/allen}  

 

输出为

Shell代码  收藏代码

  1. /home/allen/shell/test.tar.gz  

  2. test.tar.gz  

  3. allen/shell/test.tar.gz  

  4. /home/allen/shell/test.tar  

  5. /home/allen/shell/test  

  6. /home/allen/shell/allen.tar.gz