Tengo este comando de shell:
kill `cat -- $PIDFILE`
¿Qué hace el doble aquí? ¿Por qué no usar solo
kill `cat $PIDFILE`
El --
le dice que cat
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
cat
) y no por el shell.--
significa el final de las opciones de línea de comandos? He visto algunos con getopts y otras técnicas, pero nada de discusión--
.getopt(1)
página del manual : "Cada parámetro después de un parámetro '-' siempre se interpreta como un parámetro sin opción".POSIX.1-2017
POSIX también lo especifica en: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
Ver también: /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
fuente