这个语法是什么意思“${i%.avi}.mp4”

这个语法是什么意思“${i%.avi}.mp4”

可能的重复:
${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 可能会也可能不会实现更多这些,但如果实现了,使用它们将不能保证可移植性。

相关内容