首页 > 解决方案 > GIT Bash说找不到文件

问题描述

我正在尝试通过 Windows 上的 Git Bash 控制台使用 Meshlabserver 运行 .mlx 脚本。我在一个文件夹中有 .mlx 脚本,并且我有一个名为的文件script_list.txt,其中包含所有脚本的列表,如下所示:

C:/My_Work_Files/Batch_resize_surfaces_test/resize_meshlab_5.mlx
C:/My_Work_Files/Batch_resize_surfaces_test/resize_meshlab_52.mlx
C:/My_Work_Files/Batch_resize_surfaces_test/resize_meshlab_54.mlx
C:/My_Work_Files/Batch_resize_surfaces_test/resize_meshlab_56.mlx
...

对于我想做的事情,我需要从列表中选择一个随机的 .mlx 脚本,然后在从 Bash 调用它的同时将其传递给 Meshlabserver。为此,我有以下代码:

mapfile -t myArray < "C:\My_Work_Files\Batch_resize_surfaces_test\script_list.txt"
num=$(shuf -i 1-13 -n 1)
Script=${myArray[$num]}

这个想法是这段代码将在一个循环中,并且每次$num都会不同,这将从列表中获取一个随机的 .mlx 脚本。

我使用以下代码调用 Meshlabserver:

"C:\Program Files\VCG\MeshLab\meshlabserver.exe" -i "$file" -s $Script -o "${file%.*}_deci.ply" -m vn

但是,它告诉我$Script不存在。当我手动分配 .mlx 文件时$Script

Script="C:/My_Work_Files/Batch_resize_surfaces_test/resize_meshlab_5.mlx"

Meshlabserver 找到该文件并且它运行没有任何问题。我一生都无法理解从 .txt 文件中获取文件名及其路径并将其传递给变量以及手动将相同的字符串传递给变量之间的区别。当我在控制台中回显这两个字符串时,它们看起来相同。这显然与 Bash 有关,但我无法弄清楚。

编辑:为了澄清,完整的代码是这样的:

mapfile -t myArray < "C:\My_Work_Files\Batch_resize_surfaces_test\script_list.txt"
num=$(shuf -i 1-13 -n 1)
Script=${myArray[$num]}
"C:\Program Files\VCG\MeshLab\meshlabserver.exe" -i "$file" -s $Script -o "${file%.*}_deci.ply" -m vn

标签: stringbashgit-bash

解决方案


推荐阅读