Відповіді:
--
Каже cat
не намагатися розібрати , що відбувається після цього в якості опції командного рядка.
Як приклад, подумайте, що буде в двох випадках, якби змінна $PIDFILE
була визначена як PIDFILE="--version"
. На моїй машині вони дають такі результати:
$ 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
--
означає закінчення параметрів командного рядка? Я бачив таких з геттоптами та іншими методами, але нічого не обговорював --
.
getopt(1)
сторінку " man" : "Кожен параметр після параметра" - "завжди інтерпретується як параметр, який не є опцією".
POSIX.1-2017
POSIX також визначає його за адресою: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
12.2 Настанови щодо синтаксису утиліти
Керівництво 10:
Перший - аргумент, який не є параметром-опціоном, слід сприймати як роздільник, що вказує кінець параметрів. Будь-які наступні аргументи слід розглядати як операнди, навіть якщо вони починаються із символу '-'.
Дивіться також: /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
cat
), а не оболонкою.