Linux 包含压缩的简单bash字符串无效
我肯定可能有语法错误,但我已经看过了,其他人似乎就是这么写的() 有人能告诉我为什么会发生以下情况吗-Linux 包含压缩的简单bash字符串无效,linux,string,bash,if-statement,comparison,Linux,String,Bash,If Statement,Comparison,我肯定可能有语法错误,但我已经看过了,其他人似乎就是这么写的() 有人能告诉我为什么会发生以下情况吗- h="23538_" if [[ "$h" == "23538_" ]]; then echo "true"; else echo "false"; fi; >> true if [[ *"$h"* == "23538_" ]]; then echo "true"; else echo "false"; fi; >> false 还尝试: h=23538 if [[
h="23538_"
if [[ "$h" == "23538_" ]]; then echo "true"; else echo "false"; fi;
>> true
if [[ *"$h"* == "23538_" ]]; then echo "true"; else echo "false"; fi;
>> false
还尝试:
h=23538
if [[ *"$h"* == "23538_" ]]; then echo "true"; else echo "false"; fi;
>> false
if [[ *$h* == "23538_" ]]; then echo "true"; else echo "false"; fi;
>> false
if [[ *{$h}* == "23538_" ]]; then echo "true"; else echo "false"; fi
>> false
h='_23538__'
if [[ *"$h"* == "23538_" ]]; then echo "true"; else echo "false"; fi
简单地说,我正在试图找出$h是否是“23538_”字符串的子字符串
希望有人能帮助我……:)只有在
==
或的情况下,才能在右侧使用模式=代码>操作员。请参见[[expression]]
下的manbash
:
当==
和时=使用代码>运算符时,运算符右侧的字符串被视为模式,并根据所述规则进行匹配
下面的模式匹配下,就好像启用了extglob
shell选项一样
那么:
$ echo $h # true subset
23538
$ if [[ "23538_" =~ "$h" ]]; then echo "true"; else echo "false"; fi;
true
manbash
:
另外还有一个二进制运算符=~,具有相同的
优先级为==和!=。当它被使用时,右边的字符串
该运算符被视为一个扩展正则表达式,并相应地进行匹配(如正则表达式(3))
你需要交换参数
if [[ "23538_" == *"$h"* ]]; then echo "true"; else echo "false"; fi;
> true
全局模式只能在右侧变量上使用。如果[[“23538”==*“$h”*],您的意思是这样的;然后呼应“真”;否则回声“假”;fi
…?它仍然不工作…:/h=23538;如果[[“23538”=*“$h”*];然后呼应“真”;否则回声“假”;fi
为我打印真的
。很抱歉你是对的,它正在工作。。。谢谢