o que significa “sh -”?

2

Eu sei que sh apenas chama o shell padrão, então "bash -" significa o mesmo. Mas alguém pode explicar a sintaxe para mim. Eu tentei procurar no manual de bash, mas não consegui encontrá-lo. Eu me deparei com isso porque queria executar a saída de um comando. Ex.

echo date | sh -

imprime a data.

    
por user242114 12.02.2018 / 03:57

1 resposta

1

Sim, sh - e bash - significam o mesmo.

No homem bash, há esta descrição (ênfase minha):

--
A -- signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. An argument of - is equivalent to --

Isso simplesmente significa que ele sinaliza o fim das opções e que quaisquer tokens a seguir são argumentos (não opções), mesmo que iniciem com um traço - .

E um POSIX sh tem uma descrição semelhante .

Thus, this volume of POSIX.1-2017 allows the single to mark the end of the options, in addition to the use of the regular "--" argument, because it was considered that the older practice was so pervasive.

Este comando:

$ echo "date" | sh -
Mon Feb 12 00:00:00 UTC 2018

Mas também faz isso:

$ echo "date" | sh
Mon Feb 12 00:00:00 UTC 2018

E isso

$ echo "date" | sh -s
Mon Feb 12 00:00:00 UTC 2018

Isso deixará claro o que está sendo executado:

$ echo "date" | sh -x 
+ date
Mon Feb 12 00:00:00 UTC 2018

Mas isso falhará:

$ echo "date" | sh - -x
sh: 0: Can't open -x

Isso significa que a string de data está sendo lida como um comando da entrada padrão e que o traço (-) sinaliza o fim das opções e inicia os argumentos (o mesmo que - faria).

    
por 12.02.2018 / 04:19

Tags