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
相关产品推荐
相关产品推荐

