variables - 终端中的变量 ${i%.*} 是什么意思?
问题描述
这个shell命令根据@llogan的这个答案将所有.avi转换为.mp4
有人可以解释${i%.*} 的工作原理吗?特别是 % 是做什么的?
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
解决方案
从BashGuide/Parameters/Parameter Expansion:
${parameter%pattern}
与pattern
结尾匹配parameter
。结果是parameter
删除了最短匹配的扩展值。
意思是“
%
从变量内容的末尾删除最短的匹配”
换句话说,如果parameter
(i
在您的情况下) 的扩展值是myvideo.avi
,那么%.*
将导致myvideo
. 这样输出文件最终不会被命名myvideo.avi.mp4
,而是被命名myvideo.mp4
。
推荐阅读
- python - Python 的 cv2 给出消息“返回 NULL 而没有设置错误”
- java - 如何在同一个类中调用接口方法?
- php - php Bangla unicode outpur 罗马文本
- python-3.x - 缺少必需的参数:input_tensor
- python - SVM 错误的输入形状
- ruby-on-rails - Rails 协会不触发 Postgres 查询并返回 Nil
- python-3.x - 由于长度不等,将 ['a', 'b'] 类型数组的列拆分为多列失败
- css - 线性渐变效果在另一个页面上不起作用 - 可能缺少 css 代码
- javascript - 我们如何确定客户是否通过手机查看我的网站?
- visual-studio-code - 奇怪的 HTML 格式更漂亮