%20en%20este%20comando%20de%20shell%3F.png)
Tengo este comando de shell:
kill `cat -- $PIDFILE`
¿Qué diablos hace aquí? ¿Por qué no usar solo
kill `cat $PIDFILE`
Respuesta1
Le --
indica cat
que 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 $PIDFILE
se 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