set command com - flag

0

Eu tenho um arquivo (chamado texto) que contém dois campos de strings (separados por espaço) como segue:

1.2.3  version1

Quando uso o comando set da seguinte maneira, tenho o primeiro campo no campo $ 1 e o segundo em $ 2. Alguém pode explicar o que este comando faz? Em particular, o que < faz? Isso é um redirecionamento de entrada?

set -- $(<text)
    
por coffeMug 04.06.2013 / 20:59

1 resposta

3

Esse comando combina dois truques bem especiais ...

set -

Geralmente set é usado para configurar as opções do shell (veja a página man do seu shell). Um caso especial é set -- . Isso é usado para definir os parâmetros posicionais. Infelizmente eu esqueci o que era isso, mas uma vez li sobre um problema que não poderia ser resolvido por outros meios.

$ (< arquivo)

$(command) é a subsituição do comando: O shell coleta a saída no stdout e substitui $(command) por essa saída ao executar a linha de comando. Se você precisar do conteúdo de um arquivo, poderá fazer isso: $(cat file) . $(< file) é apenas uma versão curta disso, salvando um processo desnecessário ( cat ).

    
por 04.06.2013 / 21:55