我有一个像.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作为输入,编译它并给出输出......
答案 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
这将使用命令行参数(如果存在),否则它会要求输入文件名。