为什么 bash 不识别带有连字符/破折号的大小写选项?



我正在尝试使用 case 语句来确定我是否有合法命令。它看起来像这样:

function commandTest {
    case $1 in
    –score) echo "something";;
    *)      echo "unknown";;
    esac
}

现在,如果我像这样使用函数,它不起作用,因为case无法正确识别字符串,尽管它是相同的。

$ commandTest "-score"
unknown

我在这里做错了什么?

如发布的那样,您的示例代码在 score 前面有一个破折号 (Unicode U+2013),而不是减号 (ASCII 0x2D),这会阻止 bash 匹配字符串-score

开关:

–score) echo "something" 

自:

-score) echo "something" 

最新更新