Bash

使用 getopts 時 OPTARG 中出現奇怪的前導空格

  • November 1, 2014

我花了很長時間研究我遇到的問題,但是 getopts 教程中沒有一個關於使用 getopts 時 OPTARG 中的前導空格的任何內容。

在 bash(在 Ubuntu 和 OSX 上)中,執行以下命令:

OPTIND=1 && getopts ":n:" opt "-n 1" && echo "OPTARG: '$OPTARG'"

它迴響:

OPTARG: ' 1'

但是,如果我執行這個:

OPTIND=1 && getopts ":n:" opt "-n1" && echo "OPTARG: '$OPTARG'"

那麼我會得到我所期望的:

OPTARG: '1'

根據我在網上閱讀的內容:

通常一個或多個空格將值與選項字母分開;然而,getopts 也處理緊跟在字母后面的值$$ Reference $$

如果上面的引用對於 getopts 是普遍正確的,那麼我在 OPTARG 中得到那個前導空格我做錯了什麼?

您應該只省略 周圍的雙引號"-n -1",因為這是保留1:之前的空間的原因

OPTIND=1 && getopts ":n:" opt -n 1 && echo "OPTARG: '$OPTARG'"

給出:

OPTARG: '1'

引用自:https://unix.stackexchange.com/questions/165358