1

在我的脚本中,我试图获取一个字符串,然后输出一个字符串的扩展名(如果有的话)。所以基本上我取文件的基本名称,然后输出一段时间后出现的任何内容。

做这样的事情的语法是什么?

例如

dotcutter.sh
file=testfile.jpg

脚本应该输出 .jpg

编辑:

我现在解决了我的问题:

file=$(basename "$1" )
stub=${file%.*}
echo ${file#"$stub"}

这将我的论点简化为一个基本名称,谢谢大家。

4

2 回答 2

3
$ file=testfile.jpg
$ echo ${file##*.}
jpg
$ file=testfile.ext1.ext2
$ echo ${file##*.}
ext2
$ file=noextension
$ echo ${file##*.}
noextension

请注意,如果文件没有扩展名,则它不起作用。如果这很重要,请尝试以下两步解决方案:

$ file=testfile.ext1.ext2
$ stub=${file%.*}
$ echo ${file#"$stub"}
.ext2

echo或者这个基于正则表达式的,只有在实际存在扩展时才会调用。(&&是“如果那么”的简写。)

$ regex='(\.[^.]*)$'
$ file=testfile.ext1.ext2
$ [[ $file =~ $regex ]] && echo ${BASH_REMATCH[1]}
.ext2
$ file=noextension
$ [[ $file =~ $regex ]] && echo ${BASH_REMATCH[1]}

也可以看看:

于 2012-10-09T19:34:48.210 回答
1

试试下面的代码:

file=testfile.jpg
echo .${file#*.}

使用参数扩展

于 2012-10-09T19:33:41.323 回答