2013-03-04 101 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 

这将使用命令行参数,如果它是存在的,否则它要求一个文件名。