Bash
使用 getopts 時 OPTARG 中出現奇怪的前導空格
我花了很長時間研究我遇到的問題,但是 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'