Чтение многих значений из одной переменной в конфигурационном файле.Я хочу с помощью ksh подключить oracle db и сделать запрос - PullRequest
0 голосов
/ 09 июля 2019

Привет всем,

Мне нужно написать скрипт, который читает переменные из конфигурационных файлов и подключается в Oracle DB и после этого сделать несколько запросов и сохранить результаты в файл_журнал.

Для подключения БД в моем файле есть строка

sqlplus $ Username / $ Userpassword @ Enviroment

чем у меня есть функция, которая выполняет один запрос и сохраняет результат в лог-файле.

Хотя у меня только одна среда, все нормально работает, но мне нужно обновить этот скрипт, который берет значения окружения из конфигурационного файла и запускается в цикл.

В конфигурационном файле у меня есть такая информация

Имя пользователя = пароль пользователя = пароль Enviroments = Env1, Env2, Env3, EnvX

Проблема в том, что скрипт читает Enviroment = Env1, Env2Env3, EnvX как один значение и не разделить как ... Enviroment = Env1 и подключить БД и сделать некоторые рабочие места

Enviroment = Env2 и подключить БД и сделать некоторые работы ....

У меня есть цикл, который выглядит так

для теста в $ (echo $ Enviroment | sed "s /, / / ​​g") do echo "сделать какую-то работу" сделал

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

Это работает, но только в конце скрипта. В программе начало где программа переменная read $ Enviroment принимает все как одно значение и там начинается ошибки .. Я не могу понять, как поместить эту функцию в мой скрипт и написать все в большой петле

Надеюсь, вы понимаете, что у меня за проблема. Я ожидал, что цикл использует переменные из конфигурационного файла, и если есть много сред, этот цикл принимает одно за другим значение переменной и помещает его в код.

1 Ответ

2 голосов
/ 09 июля 2019

Как сказал Ртойала, вы всегда должны приводить минимальный воспроизводимый пример. Тем не менее, используя то, что я понял из вашего текста, я сделал этот код. Надеюсь, это даст вам несколько советов.

Использование файла конфигурации как:

Username=user1 Userpassword=pass1 Enviroments=Env11,Env12,Env13,Env1X
Username=user2 Userpassword=pass2 Enviroments=Env21,Env22,Env23
Username=user3 Userpassword=pass3 Enviroments=Env31,Env32

Этот код:

#!/bin/ksh

while read -r a b c; do
        locUser=${a#*=}
        locPasswd=${b#*=}
        locEnv=${c#*=}
        arEnv=( ${locEnv//,/ } )
        for i in ${!arEnv[@]}; do
                print "sqlplus $locUser/$locPasswd@${arEnv[$i]}"
        done
done < ./config.txt

даст:

sqlplus user1/pass1@Env11
sqlplus user1/pass1@Env12
sqlplus user1/pass1@Env13
sqlplus user1/pass1@Env1X
sqlplus user2/pass2@Env21
sqlplus user2/pass2@Env22
sqlplus user2/pass2@Env23
sqlplus user3/pass3@Env31
sqlplus user3/pass3@Env32
...