【问题标题】:Ash script - detect whether a variable equals to "?"Ash 脚本 - 检测变量是否等于“?”
【发布时间】:2013-01-23 14:12:09
【问题描述】:

我正在编写一个 Ash 脚本并尝试检测输入变量是否等于“?”或不。我发现最好使用case 来执行此操作,但我无法使其正常工作。我的代码是:

case $@ in
*?*) usage
    operationSucceeded
    exit;;
  *) echo "Unknown argument: $@"
    usage
    operationFailed
    exit $E_OPTERROR;;   # DEFAULT\
esac

第一个选项总是被触发,而我希望它仅在 ? 是变量时触发,而其他所有选项都是另一个选项。

【问题讨论】:

标签: string shell switch-statement ash


【解决方案1】:

改成

 case $@ in
     *[\?]* ) usage 
    .....
  easc

您可能不需要 '\' ,但它不会造成伤害。

在更一般的意义上,[ABC] 被称为字符类,它将匹配[ ] 中列出的任何单个字符。所以在*[\?]* 中,我们说的是“任意数量的字符(包括零个字符),然后是 Char 类 [\?](在这种情况下,只有 '?' 字符),然后是零个或多个字符”。

IHTH

【讨论】:

  • 是的,不需要反斜杠。
猜你喜欢
  • 2017-09-30
  • 2020-01-05
  • 2014-12-04
  • 1970-01-01
  • 2012-10-16
  • 2015-02-04
  • 1970-01-01
  • 2019-11-17
  • 2018-10-06
相关资源
最近更新 更多