como atribuir parâmetros a scripts bash [closed]

1

Estou codificando em C no Ubuntu e Debian e estou cansado de mudar o arquivo compilado de a.out para outro nome toda vez que faço um programa, então eu quero escrever um pequeno script como este:

cc file.c 

mv a.out file.out 

Meu problema é que não sei como alterar o nome "file" para qualquer outro que eu queira. Eu não sei se você pode ter parâmetros no Ubuntu.

Obrigado pelas suas respostas!

    
por Lahashh 03.10.2016 / 23:24

3 respostas

3

Sim, você pode ter numerado parâmetros posicionais em um script de shell bash (ou outro derivado de Bourne), por exemplo

#!/bin/bash

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

que pode ser chamado como

./myscript file

para compilar e vincular file.c a file - veja por exemplo a seção Positional Parameters da página de manual do bash ( man bash ).

No entanto, se você tiver make instalado, deverá simplesmente poder escrever make file para compilar e vincular file.c a um executável file usando as regras padrão.

Por exemplo, dado

$ ls
hello.c  subdir1  subdir2

onde

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

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

  return 0;
}

então

$ make hello
cc     hello.c   -o hello
$ 
$ ./hello
Hello world!
    
por steeldriver 04.10.2016 / 01:29
2

Você não precisa fazer isso. -o flag para o compilador já permite especificar o nome da saída.

Nota : no Linux, cc é um link simbólico para gcc , que é o compilador GNU C

Exemplo:

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

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

Quanto aos próprios scripts, você pode usar argumentos de linha de comando com $N , em que N é o número inteiro

$ cat compile_stuff.sh                                                         
#!/bin/bash
if gcc ""
then
    mv a.out ""
fi
$ ./compile_stuff.sh hello_world.c MyProg                                      
$ ./MyProg                                                                     
Hello World$ 
    
por Sergiy Kolodyazhnyy 03.10.2016 / 23:32
1

cc -o file.out , de man cc , é a resposta simples. Para softwares mais complexos, usamos make (veja man make , procure por Makefile em fontes baixadas)

    
por waltinator 03.10.2016 / 23:34