[英]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.