linux脚本运行c程序

时间:2013-09-26 10:30:35

标签: c linux bash

我试图在linux中运行一个脚本来运行一个c程序 脚本如下

#!/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语句都被执行,然后所有输出都显示出来......

如果我没有在./odd222之前放置回声,则表示错误输入命令未找到(“输入”printf中的第一个元素。

请帮助我

4 个答案:

答案 0 :(得分:6)

摆脱反引号,chmod和echo。您需要做的只是运行gcc,然后运行您的程序。

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

如果成功编译,只尝试运行该程序也是一件好事。您可以使用&&

使其成为条件
#!/bin/bash
gcc odd.c -o odd222 && ./odd222

修改C代码以确保立即打印出打印输出也是一件好事。输出通常是行缓冲的,这意味着只有在最后用换行符\n写一个完整的行时才会显示它。你会想要打印换行符:

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

或明确刷新输出:

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

答案 1 :(得分:0)

以下几项改进:

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

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

示例:

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

同时运行没有echo的可执行文件

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;
}

答案 2 :(得分:0)

有关使用gcc shell脚本运行C语言程序的信息,请参见以下内容:

它也适用于任何语言。根据语言进行修改, 编译器。

第1步:

创建任何扩展名为.sh的文件(shell脚本)

例如:您的文件名.sh

第2步:

文件内容如下:

gcc `pwd`/"$filename.c"

./"a.out"

第3步:

使用以下命令在终端中更改读取,写入和执行文件的权限:

sudo chmod 777 filename.c

第4步:

在终端上执行文件。

您必须从存在源文件的目录中运行该程序,因为我已经使用了当前的工作目录(如果要选择任何规格)。

./your_file_name.sh     filename.c

示例屏幕截图:

Example Screenshot

答案 3 :(得分:-1)

你不需要做

echo `./odd222`

如果你只是写

./odd222

shell根据确定需要执行的文件的方式尝试执行程序。只需进行这些更改,您的代码就可以运行。

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

写作时

echo `./odd222`

它无法识别命令。它只在那里等待。我们的程序没有任何关系。