在此示例中,我希望它知道$@是否包含两个单词/符号" 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