You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本提取mkv文件名前两位字符存入变量的语法问题

正确可运行代码
for mkvfile in *.mkv; do 
    num=$(echo "$mkvfile" | cut -c 1-2)
    echo "$num"
done
错误原因说明
  • 变量赋值语法错误:Shell 中变量赋值时等号左右不能有空格,你写的num= $(...)里等号后带了空格,会被 Shell 判定为要执行$(...)对应的命令,而不是给num变量赋值。
  • 变量调用语法错误:你在命令替换里直接写mkvfile | cut -c 1-2,Shell 会把mkvfile当作系统命令去查找执行,自然会报command not found的错误,要输出变量的值需要用echo "$mkvfile"作为管道的输入。
更高效的优化写法

不需要调用echo和cut命令,用 Shell 原生的参数扩展就能实现字符串截取,无需创建子进程,批量处理文件时性能更好:

for mkvfile in *.mkv; do
    # 从变量mkvfile的第0位开始截取2个字符
    num=${mkvfile:0:2}
    echo "$num"
done

内容的提问来源于stack exchange,提问作者user256787

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:45:04