Was bedeutet „--“ (Doppelstrich) in diesem Shell-Befehl?

Was bedeutet „--“ (Doppelstrich) in diesem Shell-Befehl?

Ich habe diesen Shell-Befehl:

kill `cat -- $PIDFILE`

Was macht das Doppelte hier? Warum nicht einfach verwenden

kill `cat $PIDFILE`

Antwort1

Dies --weist darauf hin cat, dass nicht versucht werden soll, die nachfolgenden Befehlszeilenoptionen zu analysieren.

Überlegen Sie sich beispielsweise, was in den beiden Fällen passieren würde, wenn die Variable $PIDFILEals definiert wäre PIDFILE="--version". Auf meinem Rechner führen sie zu folgenden Ergebnissen:

$ 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

Antwort2

POSIX.1-2017

POSIXgibt es auch an unter:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

12.2 Richtlinien zur Dienstprogrammsyntax

Leitlinie 10:

Der erste--Argumente, die keine Optionsargumente sind, sollten als Trennzeichen akzeptiert werden, das das Ende von Optionen anzeigt. Alle folgenden Argumente sollten als Operanden behandelt werden, auch wenn sie mit dem Zeichen '-' beginnen.

Siehe auch:https://unix.stackexchange.com/questions/11376/was-bedeutet-double-dash-auch-bekannt-als-bare-double-dash

verwandte Informationen