可能的重复:
${0##*/} 和 ${0%/*} 如何工作?
我在网络上的某个地方遇到过这种类型的语法:
for i in *.avi
do
ffmpeg -i "$i" "${i%.avi}.mp4"
done
这是怎么用的"${i%.avi}.mp4"
以及我该如何使用它?
答案1
这称为参数扩展。右侧的所有内容都.avi
将被删除,并.mp4
连接到结果上。
如果$i
是“foo.avi”,则结果将是“foo.mp4”。Bash常见问题解答 73有一些很好的示例,说明您可以使用参数扩展进行字符串操作的其他方法。
答案2
它将删除后缀.avi
($i
如果存在),然后将结果与.mp4
.
这称为参数扩展。
标准的描述如下: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02
您的 shell 可能会也可能不会实现更多这些,但如果实现了,使用它们将不能保证可移植性。