我有一个执行计算的自定义
.exe
程序。它可以从 Windows 命令行手动运行,但为了提高效率,我创建了一个 .bat
文件。 .bat
文件在 Windows 命令行中启动 .exe
并通过管道输入。具体来说,它从 runs.txt
中读取 3 个文件的列表,并将列表中的每个文件传递给程序。然后程序从文件中读取信息,执行计算并保存输出。
我正在尝试将此工作流程转换为 bash,以便我可以使用 Git Bash 将其与其他工作流程一起运行。我不知道如何将管道语法转换为 bash。
文件夹结构:
myfolder
|---- myprogram.exe
|---- myshell.sh
|---- mybatch.bat
|---- runs.txt
|---- RunA.csv
|---- RunB.csv
|---- RunC.csv
这是
mybatch.bat
的内容,当我从 Windows 命令行运行时它可以正常工作:
(for %%i in (3 runs.txt) do @echo %%i)| myprogram.exe
当我在 Git Bash 终端中使用
myfolder
作为 pwd
时,我可以运行以下命令并在终端运行:
cmd
(for %i in (3 runs.txt) do @echo %i)| myprogram.exe
exit
(请注意,从终端运行时使用 %i,从批处理运行时使用 %%i。) 我知道它正在工作,因为它打印了预期的输出并创建了预期的文件。
但是,当我尝试将其放入
myshell.sh
并从 Git Bash 终端运行 sh myshell.sh
时,什么也没有发生。 没有打印输出,也没有创建文件。但是,终端确实会切换到 Windows 命令行,所以我认为它只是在读取第一行 (cmd
) 并停止。
myshell.sh
的内容:
cmd
(for %%i in (3 runs.txt) do @echo %%i)| myprogram.exe
(注意我也试过 %i;同样的问题)
如何让它继续到下一行,就像我在终端中手动输入命令一样? 寻找适用于 Git Bash 的解决方案;不使用其他 bash 模拟器。