6

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

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

奇数.c 是

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

但问题是,当我运行这个脚本时,所有的 scanf 语句都会被执行,然后所有的输出都会同时显示出来......

如果我之前没有回显,./odd222它会说错误输入命令未找到(“输入”printf 中的第一个元素。

请帮助我

4

4 回答 4

9

去掉反引号、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);
于 2013-09-26T10:52:20.940 回答
2

要使用 gcc shell 脚本运行 C 语言程序,请参阅以下内容:

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

步骤1:

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

例如:your_file_name.sh

第2步:

文件内容如下:

gcc `pwd`/"$filename.c"

./"a.out"

第 3 步:

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

sudo chmod 777 filename.c

第4步:

在终端上执行文件。

您必须从源文件所在的目录运行程序,因为我使用了当前的工作目录(如果您想选择任何规范)。

./your_file_name.sh     filename.c

示例截图:

示例截图

于 2018-07-13T02:38:38.077 回答
1

你不需要这样做

echo `./odd222`

如果你只是写

./odd222

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

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

当你写

echo `./odd222`

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

于 2013-09-26T10:52:11.377 回答
0

以下是一些改进:

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

当您要将命令的返回值存储在变量中时使用这些。

例子:

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

还运行您的可执行文件而不回显

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

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

奇数.c

#include <stdio.h>

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

  return 0;
}
于 2013-09-26T10:55:18.087 回答