1

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

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 ответ1

4

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

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

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

 rm -- --help

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .