--) 在 bash 的 case 結構中意味著什麼?

--) 在 bash 的 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

bash 的 case 結構中 --) hrer 是什麼意思?

        --)
            shift
            break
            ;;

答案1

bash 並沒有什麼特別的意義。

該片段的作者想要匹配兩個連字符本身,而不需要任何其他字符。字面上 」 - 」。

許多 Unix 命令列工具,特別是來自 GNU 遺產的,允許您使用“--”作為分隔符,表示“超過此點的任何內容都不應被視為選項;”此命令列的其餘部分由參數組成(例如作用於檔案的命令的檔案名稱清單)」。這樣,您就可以輸入以下內容來刪除名為「--help」的檔案:

 rm -- --help

它不會rm認為“--help”是查看幫助語句的長選項。 (這是一個很糟糕的例子,但我想你明白我的意思。)

我認為該腳本的作者想讓“--”在他的腳本中發揮作用。

相關內容