`
AllenZhang
  • 浏览: 52982 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

 

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

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

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

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

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

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

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

 

举例:

pathname=/home/allen/shell/test.tar.gz
echo ${pathname}
echo ${pathname##/*/}
echo ${pathname#/*/}
echo ${pathname%.*}
echo ${pathname%%.*}
echo ${pathname/test/allen}
 

输出为

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

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics