Réponses:
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
--
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
12.2 Consignes de syntaxe de l'utilitaire
Directive 10:
Le premier - argument qui est pas un argument d'option doit être acceptée comme séparateur indiquant la fin des options. Tous les arguments suivants doivent être traités comme des opérandes, même s'ils commencent par le caractère «-».
Voir aussi: /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
cat
) et non par le shell.