在我的脚本中,我试图获取一个字符串,然后输出一个字符串的扩展名(如果有的话)。所以基本上我取文件的基本名称,然后输出一段时间后出现的任何内容。
做这样的事情的语法是什么?
例如
dotcutter.sh
file=testfile.jpg
脚本应该输出 .jpg
编辑:
我现在解决了我的问题:
file=$(basename "$1" )
stub=${file%.*}
echo ${file#"$stub"}
这将我的论点简化为一个基本名称,谢谢大家。
在我的脚本中,我试图获取一个字符串,然后输出一个字符串的扩展名(如果有的话)。所以基本上我取文件的基本名称,然后输出一段时间后出现的任何内容。
做这样的事情的语法是什么?
例如
dotcutter.sh
file=testfile.jpg
脚本应该输出 .jpg
编辑:
我现在解决了我的问题:
file=$(basename "$1" )
stub=${file%.*}
echo ${file#"$stub"}
这将我的论点简化为一个基本名称,谢谢大家。
$ 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]}
也可以看看: