我有一个如下命令字符串:
CMD_LAUNCH="launch.sh \
-v $ABC_VERSION \
-p something \
-X $MAX_HEAP_SPACE_PARAM \
-Dpersist false \
-DanotherPasram Abc"
我将在ksh中启动此命令,如下所示:
$CMD_LAUNCH
如何确保命令有-Dpersist false
?
我想介绍-Dpersist和false之间可能没有任何空格的情况。但我的尝试未能实现这一点。
尝试1)
if [[ "$CMD_LAUNCH" = *"Dpersist\s+false"* ]]
then
echo "It's there!"
else
echo "It's not there!"
fi
我想测试命令中是否存在Dpersist false
。
答案 0 :(得分:1)
if [[ "$CMD_LAUNCH" == *+(Dpersist+(\s)false)* ]]
then
echo "It's there!"
else
echo "It's not there!"
fi
Ksh的模式匹配与正则表达式不同,因为它总是匹配整个字符串 - 就像正则表达式一样,以^
开头,以$
结尾。
因此,您必须将带有星号的模式(用括号括起来)括起来。 *
匹配任何字符序列。
每个模式前面的+
表示匹配模式的一次或多次出现。
另一种选择是使用=~
运算符:
if [[ "$CMD_LAUNCH" =~ Dpersist\s+false ]]
then
echo "Its there!"
else
echo "Its not there!"
fi
=~
使用正则表达式语法。
有关更多示例,请参阅
同时查看ShellCheck,它有助于在shell脚本中找到错误。