Что означает -) в случае bash?
Я видел фрагмент кода, содержащий структуру дела.
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.
Автор этого фрагмента хотел сопоставить два дефиса самостоятельно без каких-либо других символов. В прямом смысле "--".
Многие инструменты командной строки Unix, особенно из наследия GNU, позволяют использовать "-" в качестве разделителя для обозначения "ничего после этой точки не должно рассматриваться как опция; остальная часть этой командной строки состоит из аргументов (таких как список имен файлов для команды, которая действует на файлы) ". Таким образом, вы можете, скажем, удалить файл с именем --help, введя:
rm -- --help
Это держит rm
от мысли, что "--help" - это длинный вариант, чтобы увидеть справку. (Это плохой пример, но я думаю, вы понимаете, о чем я.)
Я думаю, что автор этого сценария хотел, чтобы "-" работало так же в его сценарии.