Ich habe diesen Shell-Befehl:
kill `cat -- $PIDFILE`
Was macht das Doppelte hier? Warum nicht einfach verwenden
kill `cat $PIDFILE`
Die Anweisung lautet --
, cat
nicht zu versuchen, das, was danach kommt, als Befehlszeilenoptionen zu analysieren.
Stellen Sie sich als Beispiel vor, was in beiden Fällen passieren würde, wenn die Variable $PIDFILE
als definiert wäre PIDFILE="--version"
. Auf meinem Computer geben sie die folgenden Ergebnisse:
$ 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
) und nicht durch die Shell definiert wird.--
das Ende der Befehlszeilenoptionen versteht? Ich habe solche mit getopts und anderen Techniken gesehen, aber nichts diskutiert--
.getopt(1)
Manpage schauen : "Jeder Parameter nach einem '-' Parameter wird immer als Nichtoptionsparameter interpretiert".POSIX.1-2017
POSIX gibt es auch an: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
Siehe auch: /unix/11376/what-double-dash-mean-also-known-as-bare-double-dash
quelle