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

Git Bash调用Meshlabserver时txt读取的.mlx脚本路径提示不存在

问题原因与修复方案

核心问题

你遇到的报错由3个常见的Bash使用误区共同导致:

  1. 数组索引越界:Bash数组默认从0开始编号,你用shuf -i 1-13生成随机数,假设script_list.txt有13个脚本,合法下标范围是0~12,生成13时会取到空值,就算生成1~12也会跳过第一个脚本。
  2. 路径带隐藏Windows换行符:如果是用Windows记事本生成的script_list.txt,每行末尾是\r\n(Windows标准换行),mapfile -t只会删除末尾的\n,剩下的\r(回车符)会附着在$Script变量末尾。echo输出时\r会把光标挪到行首,肉眼看不到异常,但实际路径多了一个不可见字符,系统无法识别文件。
  3. 变量未加双引号:调用命令时$Script没有包裹双引号,就算路径本身没有问题,只要路径包含空格、特殊字符就会被解析为多个参数,导致传参错误。

修复后代码

# 读取文件时自动删除每行末尾的\r,规避Windows换行符问题
mapfile -t myArray < <(sed 's/\r$//' "C:\My_Work_Files\Batch_resize_surfaces_test\script_list.txt")
# 基于数组实际长度生成随机下标,后续新增脚本不需要修改硬编码数值
num=$(shuf -i 0-$(( ${#myArray[@]} - 1 )) -n 1)
Script=${myArray[$num]}
# 调用时给$Script加双引号,保证路径解析正确
"C:\Program Files\VCG\MeshLab\meshlabserver.exe" -i "$file" -s "$Script" -o "${file%.*}_deci.ply" -m vn

验证方法

如果需要排查变量是否包含隐藏字符,可以加一行调试命令查看二进制内容:

echo -n "$Script" | od -c

如果输出末尾显示\r,就说明存在隐藏换行符,用上述代码中的sed处理即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:48:01