¿Qué significa "--" (doble guión) en este comando de shell?

¿Qué significa "--" (doble guión) en este comando de shell?

Tengo este comando de shell:

kill `cat -- $PIDFILE`

¿Qué diablos hace aquí? ¿Por qué no usar solo

kill `cat $PIDFILE`

Respuesta1

Le --indica catque no intente analizar lo que viene después como opciones de línea de comando.

Como ejemplo, piense en lo que sucedería en los dos casos si la variable $PIDFILEse definiera como PIDFILE="--version". En mi máquina, dan los siguientes 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

Respuesta2

POSIX.1-2017

POSIXtambién lo especifica en:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

12.2 Directrices de sintaxis de utilidades

Directriz 10:

La primera--Un argumento que no es una opción debe aceptarse como un delimitador que indica el final de las opciones. Cualquier argumento siguiente debe tratarse como operando, incluso si comienza con el carácter '-'.

Ver también:https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean-also-known-as-bare-double-dash

información relacionada