我需要写一个脚本,启动我的程序与不同的参数。我开始我的程序:
./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt]。
下面是我想要做的伪代码:
for each filename in /Data do
for int i = 0, i = 3, i++
./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt
end for
end for
我如何从第一个参数创建第二个参数,使它看起来像dataABCD_Log1.txt并启动我的程序?
您可以使用find的空分隔输出选项和read来安全地遍历目录结构。
#!/bin/bash
find . -type f -print0 | while IFS= read -r -d $'\0' file;
do echo "$file" ;
done
在你的案例中,
#!/bin/bash
find . -maxdepth 1 -type f -print0 | while IFS= read -r -d $'\0' file; do
for ((i=0; i<=3; i++)); do
./MyProgram.exe "$file" 'Logs/'"`basename "$file"`""$i"'.txt'
done
done
此外,
#!/bin/bash
while IFS= read -r -d $'\0' file; do
for ((i=0; i<=3; i++)); do
./MyProgram.exe "$file" 'Logs/'"`basename "$file"`""$i"'.txt'
done
done < <(find . -maxdepth 1 -type f -print0)
将在脚本(进程)的当前范围内运行while循环,并允许在需要时使用find的输出来设置变量。