bash中的case语句

lit*_*way 1 bash sh hyphen

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

function commandTest {
    case $1 in
    –score) echo "something";;
    *)      echo "unknown";;
    esac
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用这样的功能,它不起作用.case虽然相同,但无法正确识别字符串

$ commandTest "-score"
unknown
Run Code Online (Sandbox Code Playgroud)

它不打印"东西".那我在这里做错了什么?

lre*_*der 7

发布后,您的示例代码前面有一个短划线(Unicode U + 2013)score,而不是减号(ASCII 0x2D),这阻止了bash与字符串匹配-score

开关:

–score) echo "something" 
Run Code Online (Sandbox Code Playgroud)

至:

-score) echo "something" 
Run Code Online (Sandbox Code Playgroud)

  • 难道是因为我从pdf文件中复制粘贴了? (2认同)