Como o Bash lê sua entrada?

0

Ao ler o Manual de Referência do Bash em operação do shell , ele diz:

  1. Reads its input from a file (see Shell Scripts), from a string supplied as an argument to the -c invocation option (see Invoking Bash), or from the user’s terminal.

Aqui estão minhas perguntas:

  1. qual é a diferença entre as 3 formas de leitura de entrada?
  2. um script pode ter argumentos? como $ ./script arg1 arg2 ...

E quando eu digito algum comando, um terminal como:

$ command1 arg1 arg2 ...

Como o Bash sabe command1 é um executável (sem processamento adicional, apenas execute) não é um script (para ler o conteúdo do script)?

    
por Alaneuler 26.02.2017 / 17:13

1 resposta

1
  1. A principal diferença é que, ao ler do terminal, o shell exibe prompts. Caso contrário, não há diferença

    $ echo ls > script
    $ bash script
    script
    $ bash -c ls
    script
    $ ls
    script
    

    O shell sabe se ele está sendo executado de forma interativa, e alguns comandos podem se comportar de maneira diferente com base nisso também.

  2. Sim, é uma coisa comum. argumentos para uma string preenchem seus parâmetros posicionais. Pesquise por $@ e $1 , $2 etc. em man bash .

    Veja ARGUMENTOS, FUNÇÕES e ALIASES em man bash . Em resumo, quando você executa command1 arg1 arg2 , o bash primeiro tenta expandir o alias command1 e executar o resultado, ou executar uma função command1 , e se mesmo isso não for possível, ele tenta encontrar o comando em seu $PATH .

por 26.02.2017 / 17:29

Tags