Что означает --) в структуре case в bash?

Что означает --) в структуре case в bash?

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

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

Ничего особенного ругать не стоит.

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

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

 rm -- --help

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

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

Связанный контент