我看到了包含案例结构的代码片段。
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
bash 的 case 结构中的 --) 是什么意思?
--)
shift
break
;;
答案1
抨击它并没有什么特别的意义。
该代码片段的作者想要匹配两个连字符,而不匹配任何其他字符。字面意思是“--”。
许多 Unix 命令行工具(尤其是 GNU 继承的命令行工具)允许您使用“--”作为分隔符,表示“此点之后的任何内容都不应视为选项;此命令行的其余部分由参数组成(例如,对文件起作用的命令的文件名列表)”。这样,您可以通过输入以下内容来删除名为“--help”的文件:
rm -- --help
它不会rm
认为“--help”是查看帮助语句的长选项。(这是一个糟糕的例子,但我想你明白我的意思。)
我认为该脚本的作者想让“--”在他的脚本中发挥这样的作用。