bash 的格结构中的 --) 是什么意思?

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

bash 的 case 结构中的 --) 是什么意思?

        --)
            shift
            break
            ;;

答案1

抨击它并没有什么特别的意义。

该代码片段的作者想要匹配两个连字符,而不匹配任何其他字符。字面意思是“--”。

许多 Unix 命令行工具(尤其是 GNU 继承的命令行工具)允许您使用“--”作为分隔符,表示“此点之后的任何内容都不应视为选项;此命令行的其余部分由参数组成(例如,对文件起作用的命令的文件名列表)”。这样,您可以通过输入以下内容来删除名为“--help”的文件:

 rm -- --help

它不会rm认为“--help”是查看帮助语句的长选项。(这是一个糟糕的例子,但我想你明白我的意思。)

我认为该脚本的作者想让“--”在他的脚本中发挥这样的作用。

相关内容