linux脚本运行c程序

我试图运行在Linux脚本运行AC程序的脚本如下

#!/bin/bash `gcc odd.c -o odd222` `chmod +x odd222` echo `./odd222` 

odd.c是

 main() { int i; printf("enter the no."); scanf("%d",&i); printf("shiv"); } 

但问题是,当我运行这个脚本的所有scanf语句执行,然后所有的输出显示simentaniously ….

如果我不把回声之前./odd222那么它说错误input命令没有find(“input”printf的第一个元素。

请帮助我

Solutions Collecting From Web of "linux脚本运行c程序"

摆脱反引号,chmod和echo 。 所有你需要做的就是运行gcc ,然后运行你的程序。

 #!/bin/bash gcc odd.c -o odd222 ./odd222 

如果编译成功,也只能尝试运行该程序。 你可以通过使用&&来使其成为条件。

 #!/bin/bash gcc odd.c -o odd222 && ./odd222 

修改C代码以确保立即打印输出也是很好的做法。 输出通常是行缓冲的,这意味着只有在最后使用换行符写完全行时才会显示。 你将要打印一个换行符:

 printf("enter the no.\n"); 

或者明确地刷新输出:

 printf("enter the no."); fflush(stdout); 

这里有一些改进:

删除脚本中的倒排引号,不需要它们。

当你想要将命令的返回值存储在一个变量中时,可以使用它们。

例:

 var=`gcc odd.c -o odd222` echo $var # this prints the gcc command output 

另外运行你的可执行文件,不要回显

 gcc odd.c -o odd222 chmod +x odd222 ./odd222 

您可以从脚本中删除chmod行,因为您已经将文件更改为可执行模式,并且每次都不需要它。

odd.c

 #include <stdio.h> int main() { int i; printf("enter the no."); scanf("%d",&i); printf("shiv = %d", i); return 0; } 

你不需要做

 echo `./odd222` 

如果你只是写

 ./odd222 

shell试图根据它如何确定文件需要执行来执行程序。只要做出这些改变,你的代码就可以工作。

放置echo在显示屏上返回一个空行,然后在随后的行上显示命令提示符。 这是因为按下ENTER键是系统开始新行的信号,因此回声重复该信号。

当你写

 echo `./odd222` 

它不能识别命令。因此它只能在那里等待.echo与我们的程序无关。