Что означает -) в случае bash?

313
scrapy

Я видел фрагмент кода, содержащий структуру дела.

while true; do case "$1" in --prepare) echo "prepare" ENV_PREPARE exit 0 ;; --sleep) SLEEP_TIME=$2 shift 2 ;; --) shift break ;; *) echo "Internal error!" exit 1 ;; esac done 

Что значит -) означает hrer в случае с bash?

 --) shift break ;; 
1
Это странно. Никогда раньше такого не видел. [Просмотр страницы руководства Bash не показывает ссылки на нее] (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html). JakeGould 6 лет назад 0
Это ничего не значит. Это просто `--` два символа тире в данном конкретном случае. Кто-то, очевидно, написал этот код для разбора аргументов скрипта и пошел с собственными решениями, используя `case`. Я уверен, что если вы исследуете код ниже, вы найдете там `$ 2` и, возможно,` $ 3` и так далее. `--` просто используется как -" Остановить параметры обработки (больше никаких параметров), все остальные параметры являются данными ". Где данные могут быть, например, источник / назначение и т. Д ... Alex 6 лет назад 1

1 ответ на вопрос

4
Spiff

Это ничего не значит для bash.

Автор этого фрагмента хотел сопоставить два дефиса самостоятельно без каких-либо других символов. В прямом смысле "--".

Многие инструменты командной строки Unix, особенно из наследия GNU, позволяют использовать «-» в качестве разделителя для обозначения «ничего после этой точки не должно рассматриваться как опция; остальная часть этой командной строки состоит из аргументов (таких как список имен файлов для команды, которая действует на файлы) ». Таким образом, вы можете, скажем, удалить файл с именем --help, введя:

 rm -- --help 

Он не rmдумает, что «--help» - это длинный вариант, чтобы увидеть справку. (Это плохой пример, но я думаю, вы понимаете, о чем я.)

Я думаю, что автор этого сценария хотел, чтобы "-" работало так же в его сценарии.

Похожие вопросы