Jawaban:
The --
memberitahu cat
untuk tidak mencoba mem-parsing apa yang datang setelah itu sebagai opsi baris perintah.
Sebagai contoh, pikirkan apa yang akan terjadi dalam dua kasus jika variabel $PIDFILE
didefinisikan sebagai PIDFILE="--version"
. Di mesin saya, mereka memberikan hasil sebagai berikut:
$ 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
--
berarti akhir dari opsi baris perintah? Saya pernah melihat yang dengan getopts dan teknik lainnya, tetapi tidak ada yang membahas --
.
getopt(1)
halaman manual : "Setiap parameter setelah parameter '-' selalu ditafsirkan sebagai parameter non-opsi".
POSIX.1-2017
POSIX juga menentukannya di: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
12.2 Pedoman Sintaks Utilitas
Pedoman 10:
Yang pertama - Argumen yang bukan merupakan pilihan-argumen harus diterima sebagai pembatas yang menunjukkan akhir pilihan. Argumen berikut harus diperlakukan sebagai operan, bahkan jika mereka mulai dengan karakter '-'.
Lihat juga: /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
cat
) dan bukan oleh shell.