J'ai cette commande shell:
kill `cat -- $PIDFILE`
Que fait le double - ici? Pourquoi ne pas utiliser simplement
kill `cat $PIDFILE`
Le --
dit de cat
ne pas essayer d'analyser ce qui vient après comme options de ligne de commande.
Par exemple, pensez à ce qui se passerait dans les deux cas si la variable $PIDFILE
était définie comme PIDFILE="--version"
. Sur ma machine, ils donnent les résultats suivants:
$ 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
) et non par le shell.--
la fin des options de ligne de commande? J'en ai vu avec des getopts et d'autres techniques, mais rien à discuter--
.getopt(1)
page de manuel : "Chaque paramètre après un paramètre '-' est toujours interprété comme un paramètre sans option".POSIX.1-2017
POSIX le précise également sur: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
Voir aussi: /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
la source