【问题标题】:case or If string contains word1 and word2大小写或如果字符串包含 word1 和 word2
【发布时间】:2012-10-24 12:13:58
【问题描述】:

在这个例子中,我想让它知道 $@ 是否包含两个单词/符号“load”和“/”

对于一个单词/符号,这是可行的

    case "$@" in */*)
    ;;
    echo "going to do stuff"
*)
    echo "will do something else"
    ;;
esac

string='My string';

if [[ "$string" == *My* ]]
then
  echo "It's there!";
fi

但如果两个单词/符号出现在随机位置,我不知道该怎么做。

更新:

输入将是模块命令。在这种情况下,我想知道是否是带有或不带有 / 指示版本的模块加载。该命令将如下所示

1) 模块加载 appname/1.1.1 或
2) 模块加载应用名
3) 模块(未加载)(列表、效用等)

这是我目前感兴趣的第一名。
3 在某些情况下是 1 的变体。
2 将按原样运行,但会包含给用户的消息

【问题讨论】:

    标签: bash if-statement case


    【解决方案1】:

    较慢的方法是遍历数组两次,然后检查“load”和“/”是否都存在,如下所示:

    for element in $@; do [[ "$element" == "load" ]] && loadPresent=1; done
    for element in $@; do [[ "$element" =~ ".*/.*" ]] && slashPresent=1; done
    if [[ $loadPresent == 1 ]] && [[ $slashPresent == 1 ]]; then
       echo "Contains load and /"
    fi
    

    (当我解释你的问题时,你希望一个参数完全是“加载”,而另一个参数包含一个斜杠。)

    【讨论】:

    • 确定这是正确的吗?在测试脚本中查看我的结果:pastebin.com/XbN67n5d if 语句接缝中的 loadPresent 为空。
    • 您也可以粘贴您的“元素”脚本吗?如果它看起来像this,它将工作correctly
    【解决方案2】:

    这样的事情是可能的:

    如果 [[ ${@} =~ .*/.* && ${@} =~ ((^)|([ ]))load(($)|([ ])) ]] 然后 回声 菲

    -或-

    如果加载=0 && 斜线=0 && \ ${@} 中的 ARG; 做 如果 [ "${ARG#*/}" != "${ARG}" ];然后斜线=1;菲 如果 [ "${ARG}" = "加载" ];然后负载=1;菲 完成 && [ "${LOAD}${SLASH}" = "11" ]; 然后 回声 菲

    -或-

    函数加载斜杠() { 加载=0 && 斜线=0 ${@} 中的 ARG; 做 如果 [ "${ARG#*/}" != "${ARG}" ];然后斜线=1;菲 如果 [ "${ARG}" = "加载" ];然后负载=1;菲 完毕 测试“${LOAD}${SLASH}”=“11” } 如果加载斜线 ${@} 然后 回声 菲

    【讨论】:

      【解决方案3】:

      这将满足您的要求

      if [[ $1 == "load" ]]; then
          if [[ $2 == */* ]]; then
              do first case
          else
              do second case
          fi
      else
          do third case
      fi
      

      【讨论】:

      • 此解决方案不一定会考虑 OP 语句“但如果两个单词/符号出现在随机位置”。它只允许斜线位于 $2 内的随机位置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多