Відповіді:
Точніше, подвійний тире ( --) використовується у вбудованих командах bash та багатьох інших командах для позначення кінця параметрів команд, після чого приймаються лише позиційні параметри.
Приклад використання: давайте скажемо, що ви хочете отримати файл для рядка -v- зазвичай -vвважатиметься можливим змінити відповідне значення (показувати лише рядки, які не збігаються), але --за допомогою рядка ви можете виконати -vподібний рядок :
grep -- -v file
--працює на відокремлення параметрів від регулярних виразів у grep, але канонічним є використання -e/ --regexp.
--, хоча ви правильно, зазначаючи, що мій приклад вище також може бути записаний як grep -e -v file(хоча це дуже заплутано).
bashвбудовані команди приймають --як кінець маркера опцій. [і echo, наприклад, не ( одна з причин echoне може бути надійно використана ).
У розділі команд Shell Builtin Commandsman bash ми можемо прочитати :
Якщо не зазначено інше, кожна вбудована команда, задокументована в цьому розділі, як приймає параметри, перед якими
-приймає,--позначає кінець параметрів .В
:,true,falseіtestвбудовані команди не приймають варіанти і не відносяться до--спеціально.exit,logout,break,continue,let, Іshiftвбудовані функції приймають і аргументи процесу , починаючи з-без необхідності--. Інші вбудовані, які приймають аргументи, але не вказані як параметри, що приймають, інтерпретують аргументи, починаючи з-недійсних параметрів, і вимагають--запобігти цій інтерпретації.Зауважте, що
echoне трактує--значення кінця варіантів.
man bash(примітка до себе для наступного разу:).
POSIX.1-2017
12.2 Настанови щодо синтаксису утиліти
Керівництво 10:
Перший
--аргумент, який не є параметром-опціоном, слід сприймати як роздільник, що вказує на кінець параметрів. Будь-які наступні аргументи слід розглядати як операнди, навіть якщо вони починаються із-символу ' '.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
setвбудований в Bash , де це абсолютно необхідно.