Как перебрать 2 массива внутри для l oop in bash - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю над сценарием, который должен устанавливать исправления в средах в зависимости от типа использования среды и даты выпуска. Для этого мне нужно проверить тип среды, а затем дату выпуска исправления. Если тип использования среды prod и time1 прошло несколько секунд с момента выпуска исправления, установите исправление.

Прочитав похожие вопросы на сайте, я пришел к этому.

u=( prod test dev)
t=( time2 time2 time3 )

# where t represents the number of seconds that must pass after the release date in order for the hotfix to be installed

for ((i=0;i<${#u[@]};i++))
do
    if ($usage_type=${u[i]} && $hf_release_date -ge $current_time+${t[i]}); then install_hotfix; fi 
done

Будет ли вышеуказанный код работать должным образом?

РЕДАКТИРОВАТЬ:

Я пытался исправить синтаксис, но я все еще что-то упускаю:

u=( prod test dev)
t=( time2 time2 time3 )

# where t represents the number of seconds that must pass after the release date in order for the hotfix to be installed

for ((i=0;i<${#u[@]};i++))
do
    if [[ "$usage_type" == "${u[i]}" ]] && [[ "$hf_release_date" -ge "$current_time"+"${t[i]}" ]]; then install_hotfix; fi 
done

1 Ответ

0 голосов
/ 27 апреля 2020

Если ваш вопрос «как выполнить итерацию по двум массивам», вы можете проверить правильность этой части кода, запустив следующий фрагмент:

u=( prod test dev)
t=( time2 time2 time3 )

for ((i=0;i<${#u[@]};i++)) 
  do echo "u[$i] = ${u[i]}, t[$i] = ${t[i]}"
done

Вывод:

u[0] = prod, t[0] = time2
u[1] = test, t[1] = time2
u[2] = dev, t[2] = time3
...