if [ "${1##*.}" = "tar" ] 如何理解这句话?

if [ "${1##*.}" = "tar" ] 如何理解这句话?

if [ "${1##*.}" = "tar" ] 如何理解这句话?      
判断传给脚本的第一个参数是否以 .tar 结尾      
斑竹能否详细说明一下?      
复制内容到剪贴板
代码:
       ${parameter#word}
       ${parameter##word}
              The  word  is expanded to produce a pattern just as
              in pathname expansion.  If the pattern matches  the
              beginning  of  the  value  of  parameter,  then the
              result of the expansion is the  expanded  value  of
              parameter  with  the shortest matching pattern (the
              ``#'' case) or the longest  matching  pattern  (the
              ``##''  case) deleted.  If parameter is @ or *, the
              pattern removal operation is applied to each  posi-
              tional  parameter in turn, and the expansion is the
              resultant list.  If parameter is an array  variable
              subscripted with @ or *, the pattern removal opera-
              tion is applied to each  member  of  the  array  in
              turn, and the expansion is the resultant list.
      
再次感谢斑竹!      
bash中的乱七八糟的括号的一个总结,
希望对大家有用

(list)
        list将在一个子shell中被执行, 不会对当前shell产生影响
        返回list的exit值

{ list; }
        可以作组合命令用
        list将在当前shell中被执行
        list结尾处必须要有新行或';'号
        返回list的exit值
        list前后必须有空格

((expression))
        算术计算


${!p}        二重参数
${!p*}        返回所有以p开头的变量
${p:-word}        如果变量p不存在,返回"word"
${p:=word}        如果变量p不存在,返回"word",并将p的值设为"word"
${p:?word}        如果变量p不存在,将"word"打入STDERR
${p:+word}        如果变量p存在,返回"word"
${p:2}                子串
${p:2:3}        子串
${p#pattern}        返回p开头删除pattern后的字符串,非贪婪模式
${p##pattern}        返回p开头删除pattern后的字符串,贪婪模式
${p%pattern}        返回p结尾删除pattern后的字符串,非贪婪模式
${p%%pattern}        返回p结尾删除pattern后的字符串,贪婪模式
${p/pattern/word}        用"word"替换pattern,pattern前可加#或%,表开头或结尾
${p//pattern/word}        用"word"替换所有pattern,pattern前可加#或%,表开头或结尾

${<file}        返回文件内容

$((expression))        返回数学表达式的值      
[QUOTE]最初由 飞灰橙 发布
[B]bash中的乱七八糟的括号的一个总结,希望对大家有用

{ list; }
        可以作组合命令用
        list将在当前shell中被执行
        list结尾处必须要有新行或';'号
        返回list的exit值
        list前后必须有空格
[/B][/QUOTE]考考你: 以下两行命令有什么不同 ?
$ ls; ls
$ { ls; ls; }      
[QUOTE]最初由 dearvoid 发布
[B]考考你: 以下两行命令有什么不同 ?
$ ls; ls
$ { ls; ls; } [/B][/QUOTE]

:confused: 斑竹出考题喽!
还真答不上来,
俺只知道个优先级的区别
ls; ls > /dev/null
{ ls; ls; } > /dev/null      
呵呵, 我就是这个意思
这位仁兄刚来就看了这么多帖子, 谢谢支持, 欢迎常来      
:cool: