Shell ksh-检查字符串是否有模式
我有一个命令字符串,如下所示:Shell ksh-检查字符串是否有模式,shell,scripting,sh,ksh,Shell,Scripting,Sh,Ksh,我有一个命令字符串,如下所示: CMD_LAUNCH="launch.sh \ -v $ABC_VERSION \ -p something \ -X $MAX_HEAP_SPACE_PARAM \ -Dpersist false \ -DanotherPasram Abc" $CMD_LAUNCH 我将在ksh中启动此命令,如下所示: CMD_LAUNCH="launch.sh \ -v $ABC_VERSION \ -p somet
CMD_LAUNCH="launch.sh \
-v $ABC_VERSION \
-p something \
-X $MAX_HEAP_SPACE_PARAM \
-Dpersist false \
-DanotherPasram Abc"
$CMD_LAUNCH
我将在ksh中启动此命令,如下所示:
CMD_LAUNCH="launch.sh \
-v $ABC_VERSION \
-p something \
-X $MAX_HEAP_SPACE_PARAM \
-Dpersist false \
-DanotherPasram Abc"
$CMD_LAUNCH
如何确保命令具有-Dpersist false
我想讨论-Dpersist和false之间不存在空格的情况。但我的尝试未能实现这一点
试试看(1)
我想测试命令中是否存在Dpersist false
。解决方案1:
Ksh的模式匹配与正则表达式不同,因为它总是匹配整个类似字符串的正则表达式,从^
开始,到$
结束。
因此,必须用星号将图案括起来,图案本身用括号括起来。*
匹配任何字符序列。
每个图案前面的+
表示匹配一个或多个图案
解决方案2:
另一个选项是使用=~
运算符:
if [[ "$CMD_LAUNCH" =~ Dpersist\s+false ]]
then
echo "Its there!"
else
echo "Its not there!"
fi
=~
使用正则表达式语法
资源
有关更多示例,请参见
另外,它还可以帮助您在shell脚本中查找错误。使用if[[$ALCYONE\u LAUNCHER\u CMD=Dpersist+('')false]]是否有比“”更好的表示空间的方法,以及如何覆盖选项卡谢谢您的输入!。试图证明它不起作用。看起来它不是正则表达式,它类似于KSHW中的模式。为什么首先要使用字符串而不是函数?解决方案一在多种情况下失败:1)ksh k.sh“a.sh-Dpersist true false”2)ksh k.sh“a.sh-Dpersistfalse”3)ksh k.sh“a.sh”