Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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
bash检查是字符串包含的子字符串不起作用_Bash - Fatal编程技术网

bash检查是字符串包含的子字符串不起作用

bash检查是字符串包含的子字符串不起作用,bash,Bash,当我执行以下脚本时,它工作正常: if [[ "[1,2,3]" =~ .*1.* ]]; then techStatus=1 else techStatus=0; fi echo $techStatus 输出为1 但当我们把它改成变量时,它就不起作用了 var1=[1,2,3] var2=1 if [[ "$var1" =~ .*"$var2".* ]]; then techStatus=1 else techStatus=0; fi echo $techStatus 输出为0 请帮我

当我执行以下脚本时,它工作正常:

if [[ "[1,2,3]" =~ .*1.* ]]; then
techStatus=1
else 
techStatus=0;
fi
echo $techStatus
输出为1

但当我们把它改成变量时,它就不起作用了

var1=[1,2,3]
var2=1
if [[ "$var1" =~ .*"$var2".* ]]; then
techStatus=1
else 
techStatus=0;
fi
echo $techStatus
输出为0


请帮我找出这里的错误。

一种更好且可读的方法是将var1转换为数组并通过var1循环


编辑它。上次错过了→ $var2甚至$var2tries,不工作无法复制;使用$var2对我来说效果很好。它对我来说很好,输出是1Key by array Index,甚至不需要循环。var1=[1]=1[2]=1[3]=1;如果[${var1[$var2]}]];然后techStatus=1;else-techStatus=0;fi-如果键可以是非数字的,这意味着将其作为一个关联数组,但这并没有太大的变化……也就是说,将此作为答案意味着您认为这个问题可以作为的一个副本结束,只要基本元素都包含在这里。
var1=(1 2 3)
var2=1
for elem in "${var1[@]}"; do
    if [[ "$elem" -eq "$var2" ]]; then
        techStatus=1
        break
    else
        techStatus=0
    fi
done
echo "$techStatus"