通过命令行提供对shell脚本的输入

时间:2013-03-04 10:00:03

标签: shell unix

我有一个像.sh扩展名的文件。

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作为输入,编译它并给出输出......

2 个答案:

答案 0 :(得分:3)

使用'$ 1'变量:

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

$ 1表示“命令行中的第一个参数”。

或者,如果要使用脚本一次编译多个文件,可以使用$ @ variable,例如:

gcc -Wall -W $@ && ./a.out

您将按如下方式调用脚本(假设它被称为'script.sh'):

./script.sh file.c

请参见following article的第3.2.5节。

如果您的项目变大,您可能还需要考虑使用指定用于构建的工具,例如automake

答案 1 :(得分:0)

你也可以用它做任何事情:

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

这将使用命令行参数(如果存在),否则它会要求输入文件名。