LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 696|回复: 2

关于模式匹配的问题

[复制链接]
发表于 2009-3-12 12:24:25 | 显示全部楼层 |阅读模式
在脚本欣赏区看到版主的这个脚本有些问题看不懂
#!/bin/bash
UNPACK=1
if [ ${1##*.} = bz2 ] ; then
        TEMP=${1%.*}
        if [ ${TEMP##*.} = tar ] ; then
                tar jxvf $1
                UNPACK=$?
                echo This is a tar.bz2 package
        else
                bunzip2 $1
                UNPACK=$?
                echo This is a bz2 package
        fi

1:${1##*.} 是什么意思?
   从内容上看应该是来判断一个后缀是bz2的文件,这种表示的方法不是很明白
2:TEMP=${1%.*} 是什么意思?
 楼主| 发表于 2009-3-12 17:07:09 | 显示全部楼层
顶上去,别沉了
回复 支持 反对

使用道具 举报

发表于 2009-3-12 17:30:23 | 显示全部楼层
请查看Bash的变量进阶.

可以试验下就知道.
## 是除掉前面的字符串
% 是除掉后面的.


  1. [/home/scys]
  2. scys <<< x="fdafsd.dafsdfasf"                                                                                                                                                                           127 @ 10005
  3. [/home/scys]
  4. scys <<< echo ${x##*.}                                                                                                                                                                                  127 @ 10008
  5. dafsdfasf
  6. [/home/scys]
  7. scys >>> echo ${x%.*}                                                                                                                                                                                     0 @ 10009
  8. fdafsd
  9. [/home/scys]
  10. scys >>> echo ${x#*.}                                                                                                                                                                                     0 @ 10010
  11. dafsdfasf
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表