Я видел фрагмент кода, содержащий структуру 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» — это длинная опция для просмотра оператора справки. (Это плохой пример, но я думаю, вы поняли, что я имею в виду.)
Я думаю, автор этого сценария хотел, чтобы «--» работало именно так.