Bash参数扩展和文件名

时间:2012-03-02 07:50:04

标签: bash fedora

我正在尝试使用

评论中找到的食谱

Extract filename and extension in Bash

file="example.tar.gz"

我正在尝试

echo "${file#.*}"

echo "${file##.*}"

但都返回

example.tar.gz

与该评论中所写的内容相反(分别为tar.gz和gz)。

Fedora 16 GNU bash,版本4.2.20(1)-release(x86_64-redhat-linux-gnu)

我要提交错误吗?

2 个答案:

答案 0 :(得分:2)

你想要的是$ {file#*。}和$ {file ## *。} - 即'*。',而不是'。*'删除是从左边开始的,所以你希望它停在完全停止(而在你的情况下,它是在字符串的开头寻找一个。并且失败)。请参阅this article on bash string operators以获得非常好的和简洁的解释。

答案 1 :(得分:0)

对不起,对不起。将点和星号的位置混合在一起。关闭,因为问题不正确。