Когда я выполняю сценарий ниже, он работает нормально:

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.

Пожалуйста, помогите мне разобраться, что здесь не так.

-3
vinay 23 Сен 2018 в 13:28

1 ответ

Лучший ответ

Лучшим и удобочитаемым подходом было бы преобразовать var1 в массив и пройти через var1.

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"
0
apatniv 23 Сен 2018 в 14:33