Когда я выполняю сценарий ниже, он работает нормально:
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
Похожие вопросы
Связанные вопросы
Новые вопросы
bash
Для вопросов о скриптах, написанных для командной оболочки Bash. Для сценариев оболочки с ошибками / синтаксическими ошибками, пожалуйста, проверьте их с помощью программы shellcheck (или на сервере веб-проверки оболочки по адресу https://shellcheck.net) перед размещением здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут касаться темы Super User, а не переполнения стека.