$ {2%。*}是什么意思?

时间:2014-10-26 15:06:07

标签: linux bash shell

我正在阅读一个bash脚本,它在输入中有两个参数,但我无法弄清楚

是什么
${2%.*}

确切地说,有人可以解释我的花括号是什么,2,%,“。” *是指两个?

由于

1 个答案:

答案 0 :(得分:5)

$2是传递给程序的第二个参数。也就是说,如果你的脚本是用

运行的
myscript foo.txt bar.jpg

$2的值为bar.jpg

%运算符从与以下模式匹配的值中删除后缀。 .*匹配句点(.),后跟零个或多个字符。放在一起,表达式从值中删除单个扩展名。使用上面的例子,

$ echo ${2%.*}
bar

P.S。或许值得注意的是,%将删除以下模式的最短匹配:因此如果$2例如bar.jpg.xz,那么${2%.*}将是bar.jpg。 (相反,%%运算符将删除模式的最长匹配,因此在两个示例中$ {2 %%。*}都为bar。)