Odpowiedzi:
--
Mówi cat
nie próbować analizować, co przychodzi po niego jako opcje wiersza poleceń.
Jako przykład zastanów się, co by się stało w dwóch przypadkach, gdyby zmienna $PIDFILE
została zdefiniowana jako PIDFILE="--version"
. Na moim komputerze dają następujące wyniki:
$ 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
--
oznacza koniec opcji wiersza poleceń? Widziałem takie z getoptami i innymi technikami, ale nic nie dyskutuje --
.
getopt(1)
strona podręcznika : „Każdy parametr po parametrze„ - ”jest zawsze interpretowany jako parametr inny niż opcja”.
POSIX.1-2017
POSIX określa to również na stronie: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
12.2 Wytyczne dotyczące składni narzędzi
Wytyczna 10:
Pierwszy - Argument, że nie jest opcją, argument powinien być przyjęty jako ogranicznik wskazujący koniec opcji. Wszelkie poniższe argumenty należy traktować jako operandy, nawet jeśli zaczynają się znakiem „-”.
Zobacz także: /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
cat
), A nie przez powłokę.