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'
举例:
-
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
-