2013-03-04 51 views
0

我有一個像這樣用.sh擴展名文件..通過命令行給予輸入shell腳本

clear 
echo -n "Enter file name: " 
read FILE 
gcc -Wall -W "$FILE" && ./a.out 
echo 

當我可以執行這個文件,它要求一個.c文件,當給出,它編譯並給出.c文件的輸出。

爲此,每次我必須首先執行此.sh文件,然後在提問時爲其提供.c文件名。無論如何,這樣我就可以在命令行本身給出.c文件,這樣它就可以使用該文件並完成工作...

我的意思是,如果我給「./file .SH somecommand cfile.c 「那麼它需要cfile.c作爲輸入,編譯它,並給出了輸出...

回答

4

使用 '$ 1' 變量:

clear 
gcc -Wall -W $1 && ./a.out 
echo 

$ 1表示」 從第一個參數命令行」。

另外,如果你想同時使用腳本來編譯多個文件,你可以使用$ @變量,在例如:

gcc -Wall -W [email protected] && ./a.out 

您將調用腳本如下(假設這就是所謂的「腳本。 sh'):

./script.sh file.c 

請參閱following article的第3.2.5節。

如果您的項目變大,您可能還想考慮使用指定用於建築的工具,如automake

+0

謝謝你...工作像魅力... – Karthik 2013-03-04 10:08:26

+0

我很高興。你能標記這個問題解決嗎? – kamituel 2013-03-04 10:09:56

+0

是的......我接受了答案...... – Karthik 2013-03-04 10:27:31

0

你也可以把它做的事情兩種方式:

if [ -n "$1" ] ; then 
    FILE="$1" 
else 
    echo -n "Enter file name: " 
    read FILE 
fi 
gcc -Wall -W "$FILE" && ./a.out 

這將使用命令行參數,如果它是存在的,否則它要求一個文件名。