Bash 未识别的选项

Bash 未识别的选项,bash,sh,hyphen,Bash,Sh,Hyphen,我试图用一个案例陈述来确定我是否有合法的命令。它看起来像这样: function commandTest { case $1 in –score) echo "something";; *) echo "unknown";; esac } 现在如果我使用这样的函数,它就不起作用了大小写无法正确识别字符串,尽管它是相同的 $ commandTest "-score" unknown 我做错了什么 如前所述,示例代码的分数前面有一个(Unicode U+

我试图用一个案例陈述来确定我是否有合法的命令。它看起来像这样:

function commandTest {
    case $1 in
    –score) echo "something";;
    *)      echo "unknown";;
    esac
}
现在如果我使用这样的函数,它就不起作用了<代码>大小写无法正确识别字符串,尽管它是相同的

$ commandTest "-score"
unknown

我做错了什么

如前所述,示例代码的
分数前面有一个(Unicode U+2013)而不是一个减号(ASCII 0x2D),这会阻止bash匹配字符串
-score

开关:

–score) echo "something" 
致:


如前所述,示例代码的
分数前面有一个(Unicode U+2013)而不是一个减号(ASCII 0x2D),这会阻止bash匹配字符串
-score

开关:

–score) echo "something" 
致:


你没有在
-score)
中使用正确的连字符它应该是
-score
。你在
-score)
中没有使用正确的连字符它应该是
-score
。对不起,em破折号是什么?原来是“en破折号”,不是“em破折号”。两者都是比减号/破折号稍长的排版字符,从视觉上看,它们与破折号非常相似,但与bashshell非常不同。使用标准文本编辑器很难输入它们。如果您使用MS word之类的工具来起草代码,请切换到标准文本编辑器,如vim、emacs或notepad++Hmm,我不知道它当时是如何实现的,但只需将其替换为减号,您的case语句就会正常工作。这可能是因为我从pdf文件复制粘贴了吗?是的,如果生成PDF的人/任何人不小心插入了一个en破折号而不是破折号,那就可以了。对不起,em破折号是什么?原来是“en破折号”,而不是“em破折号”。两者都是比减号/破折号稍长的排版字符,从视觉上看,它们与破折号非常相似,但与bashshell非常不同。使用标准文本编辑器很难输入它们。如果您使用MS word之类的工具来起草代码,请切换到标准文本编辑器,如vim、emacs或notepad++Hmm,我不知道它当时是如何实现的,但只需将其替换为减号,您的case语句就会正常工作。这可能是因为我从pdf文件复制粘贴了吗?是的,如果生成PDF的任何人/任何人意外地插入了一个en破折号而不是破折号,则可能会发生这种情况。