我试图理解表达式f2=${f%????}
在 bash 脚本中的含义。
我尝试在网上搜索一些参考资料,但没有找到有用的东西。
我正在使用的代码是:
for f in "$@"
do
f2=${f%????}
/usr/bin/openssl smime -in "$f" -verify -inform DER -noverify -out "$f2"
done
我试图理解表达式f2=${f%????}
在 bash 脚本中的含义。
我尝试在网上搜索一些参考资料,但没有找到有用的东西。
我正在使用的代码是:
for f in "$@"
do
f2=${f%????}
/usr/bin/openssl smime -in "$f" -verify -inform DER -noverify -out "$f2"
done
这记录在 bash 手册中的Shell Parameter Expansion下:
${parameter%word}
${parameter%%word}
该词被扩展以产生一个模式并根据下面描述的规则进行匹配(请参阅模式匹配)。如果模式匹配parameter扩展值的尾随部分,则扩展的结果是删除了最短匹配模式(案例)或最长匹配模式(案例)的参数值。如果parameter是或,模式移除操作将依次应用于每个位置参数,展开是结果列表。如果参数是一个以or为下标的数组变量
%
%%
@
*
@
*
,模式去除操作依次应用于数组的每个成员,展开就是结果列表。
换句话说,${f%????}
就是$f
删除最后四个字符的值。
你也可以写${f:0:-4}
,这可能更清楚一点。