循环 C 编译并通过 BASH 运行



>我正在尝试编译和运行 C 代码,同时通过 bash 循环输入文件。这是我用来自动化它的 bash 脚本的代码。

 ~!/bin/bash
 file=1
 outfile='outputnumber'$file
 readsfile='readsfilename'$file'.txt'
 compilefile=compiler$file'.o'
 gcc -lgsl -lgslcblas -std=c99 filewithccode.c -o $compilefile
 echo "Compilation over"
./$compilefile  $outfile $readsfile

所以我基本上要做的是编译filewithcode.c,以便将可执行文件存储为编译器1,它将outputnumber1和readsfilename1.txt作为输入。我想这样做的原因是我可以在"file"上循环它并为多个文件(我有 45 个文件)自动化它并自动执行。但是我收到错误:

Segmentation fault      (core dumped) ./$compilefile $outfile $readsfile

我正在尝试为编译的文件使用不同的名称,因为我尝试在服务器上并行运行它们,并且不确定使用相同的输出名称进行编译是否会导致问题。

有什么建议吗?我知道可能是"./$"导致了该错误,因为 BASH 正在回显"编译结束"。

最后一行,因为它只是放在一行上的变量,可能会导致脚本无法正确解释它。您可以尝试将其转换为字符串,然后对该字符串使用 exec 命令。例如:

comm="./""$compilefile $outfile $readsfile"
exec $comm

这在过去为我节省了很多引用变量的语法麻烦。

最新更新