情况或字符串包含Word1和Word2



在此示例中,我希望它知道$@是否包含两个单词/符号" load"one_answers"/"

对于一个单词/符号,这项工作

    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)模块(不加载)(列表,可用等)

现在是我现在感兴趣的1号。
3在某些情况下将是1的变化。
2将按原样运行,但会包含向用户的消息

慢的方法是通过数组两次迭代,然后检查是否存在"加载"one_answers"/"

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

(正如我解释了您的问题,您希望一个参数完全是"加载",另一个参数包含斜线。)

是可能的:

if [[$ {@} =〜。*/。* && $ {@} =〜((^)|([]))load(($)|([]))]]然后  回声两个fi

-or-

如果load = 0 && slash = 0 &&      对于$ {@}中的arg;   做     如果[" $ {arg#*/}"!=" $ {arg}"];然后slash = 1;fi     如果[" $ {arg}" =" load"];然后加载= 1;fi   完成&& [" $ {load} $ {slash}" =" 11"];然后  回声两个fi

-or-

功能loadSlash(){  负载= 0 && slash = 0  对于$ {@}中的arg;  做    如果[" $ {arg#*/}"!=" $ {arg}"];然后slash = 1;fi    如果[" $ {arg}" =" load"];然后加载= 1;fi  完毕  测试" $ {load} $ {slash}" =" 11"}如果LoadSlash $ {@}然后  回声两个fi

这将满足您的要求

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

相关内容

  • 没有找到相关文章

最新更新