Как указать значение переменной внутри для l oop вместе с инкрементным именем переменной в сценарии Bash - PullRequest
0 голосов
/ 04 мая 2020

Ниже приведены переменные, объявленные как таковые

CONNECT_ERETAIL1="-h17.XXX.XXX.XX1 -uroot -pXXXXXX"
CONNECT_ERETAIL2="-h17.XXX.XXX.XX2 -uroot -pXXXXXX"

ERETAIL_DB1=/usr01/eretail_db1.txt
ERETAIL_DB2=/usr01/eretail_db2.txt

Нам нужно указать их внутри для l oop

for i in 1 2
do
echo $"CONNECT_ERETAIL""$i"
echo $"ERETAIL_DB""$i"
done

Ожидаемый результат: -

-h17.XXX.XXX.XX1 -uroot -pXXXXXX
/usr01/eretail_db1.txt
-h17.XXX.XXX.XX2 -uroot -pXXXXXX
/usr01/eretail_db2.txt

Как этого добиться?

1 Ответ

2 голосов
/ 04 мая 2020

Это то, что вы ищете:

for i in 1 2; do
    t1="CONNECT_ERETAIL$i"
    t2="ERETAIL_DB$i"
    echo "${!t1}"
    echo "${!t2}"
done

Подробнее о расширении параметров такого типа вы можете прочитать в этом руководстве .

Также, используя все переменные в верхнем регистре не рекомендуется, поскольку они могут конфликтовать с bash переменными среды.

...