我正在编写一个Ash脚本,并尝试检测输入变量是否等于"?“或者不是。我发现最好是使用case来做这件事,但是我不能让它工作。我的代码是:
case $@ in
*?*) usage
operationSucceeded
exit;;
*) echo "Unknown argument: $@"
usage
operationFailed
exit $E_OPTERROR;; # DEFAULT\
esac第一个选项总是被触发,而我希望它只在?为变量时触发,而另一个选项则用于其他所有选项。
发布于 2013-01-23 23:03:19
更改为
case $@ in
*[\?]* ) usage
.....
easc你可能不需要“\”,但它不会有什么坏处。
在更一般的意义上,[ABC]被称为字符类,它将匹配[ ]中列出的任何单个字符。因此,在*[\?]*中,我们说“任意数量的字符(包括零个字符),后跟Char类[\?] (在本例中,只有'?‘char),后跟零个或多个字符”。
IHTH
https://stackoverflow.com/questions/14481770
复制相似问题