Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell ksh-检查字符串是否有模式_Shell_Scripting_Sh_Ksh - Fatal编程技术网

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”