O que significa “-” (traço duplo) neste comando shell?

10

Eu tenho este comando shell:

kill 'cat -- $PIDFILE'

O que o duplo - faz aqui? Por que não usar apenas

kill 'cat $PIDFILE'
    
por daniels 20.02.2010 / 12:38

2 respostas

18

O -- diz ao cat para não tentar analisar o que vem depois dele como opções de linha de comando.

Como exemplo, pense no que aconteceria nos dois casos se a variável $PIDFILE fosse definida como PIDFILE="--version" . Na minha máquina, eles fornecem os seguintes resultados:

$ cat $PIDFILE
cat (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjorn Granlund and Richard M. Stallman.

$ cat -- $PIDFILE
cat: --version: No such file or directory
    
por 20.02.2010 / 12:55
1

POSIX.1-2017

POSIX também especifica em: link

12.2 Utility Syntax Guidelines

Guideline 10:

The first -- argument that is not an option-argument should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character.

Veja também: link

    
por 25.08.2018 / 05:48

Tags