簡體   English   中英

運行C程序的Linux腳本

[英]linux script running c program

我試圖在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之前./odd222那么它說錯誤,請輸入命令not found(“輸入” printf中的第一個元素)。

請幫助我

擺脫反引號,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);

你不需要做

echo `./odd222`

如果你只是寫

./odd222

外殼程序會根據確定文件需要執行的方式來嘗試執行該程序。只需進行這些更改,您的代碼就會起作用。

放置echo將在顯示屏上返回空白行,然后在下一行顯示命令提示符。 這是因為按ENTER鍵是系統開始新行的信號,因此echo重復此信號。

當你寫

echo `./odd222`

它無法識別該命令,因此僅在此處等待.echo與我們的程序無關。

以下是一些改進:

刪除腳本中的反引號,不需要它們。

當您要將命令的返回值存儲在變量中時,將使用它們。

例:

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

同時運行您的可執行文件而不回顯

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

您可以從腳本中刪除chmod行,因為您已經將文件更改為可執行模式,並且每次都不需要它。

奇數

#include <stdio.h>

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

  return 0;
}

有關使用gcc shell腳本運行C語言程序的信息,請參見以下內容:

它也適用於任何語言。 根據語言和編譯器進行修改。

步驟1:

創建任何擴展名為.sh的文件(shell腳本)

例如: your_file_name.sh

第2步:

文件內容如下:

gcc `pwd`/"$filename.c"

./"a.out"

第三步:

使用以下命令在終端中更改讀取,寫入和執行文件的權限:

sudo chmod 777 filename.c

第四步:

在終端上執行文件。

您必須從存在源文件的目錄中運行該程序,因為我已經使用了當前的工作目錄(如果要選擇任何規范)。

./your_file_name.sh     filename.c

屏幕截圖示例:

屏幕截圖示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM