如何为 bash 脚本分配参数

如何为 bash 脚本分配参数

我在 ubuntu 和 debian 上使用 C 编写代码,每次编写程序时我都厌倦了将编译后的文件从 a.out 更改为另一个名称,所以我想编写一个这样的小脚本:

cc file.c 

mv a.out file.out 

我的问题是我不知道如何将“文件”名称更改为我想要的其他名称。我不知道在 ubuntu 中是否可以有参数。

感谢您的回复!

答案1

是的,你可以有编号位置参数例如,在 bash(或其他 Bourne 衍生的)shell 脚本中

#!/bin/bash

/usr/bin/cc -o "$1" "$1.c"

也可以称为

./myscript file

编译并链接file.cfile——例如参阅Positional Parametersbash 手册页的部分(man bash)。


但是,如果您已经make安装,那么您应该能够使用默认规则make file编写编译并链接file.c到可执行文件。file

例如,给定

$ ls
hello.c  subdir1  subdir2

在哪里

$ cat hello.c
#include <stdio.h>

int main(void)
{
  printf("Hello world!\n");

  return 0;
}

然后

$ make hello
cc     hello.c   -o hello
$ 
$ ./hello
Hello world!

答案2

您不必这样做。-o编译器的标志已经允许指定输出名称。

笔记:在 Linux 上,cc是指向 的符号链接gcc,它是 GNU C 编译器

例子:

$ cat hello_world.c                                                            
#include <stdio.h>

int main()
{
   printf("%s","Hello World");
   return 0; 
}
$ gcc hello_world.c -o MyProg
$ ./MyProg
Hello World

至于脚本本身,你可以使用命令行参数$N,其中 N 是整数

$ cat compile_stuff.sh                                                         
#!/bin/bash
if gcc "$1"
then
    mv a.out "$2"
fi
$ ./compile_stuff.sh hello_world.c MyProg                                      
$ ./MyProg                                                                     
Hello World$ 

答案3

cc -o file.out,来自man cc,是简单的答案。对于更复杂的软件,我们使用make(参见,在下载的源中man make查找)Makefile

相关内容