Loop to define variables in KSH


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loop to define variables in KSH
# 1  
Old 01-11-2012
Loop to define variables in KSH

Hi,

I am trying to use a database to store configurations in an environment definition scripts to make the configurations easily modifiable. (long story short - it is an easier process to make changes in the db than trying to deploy a file). The values will be stored in the database in the following format

parameter_name parameter_value
ABC value_of_abc
DEF value_of_def

I can do the first part to fetch the data and loop through. I could not
think of a way to define the variables and export it. In other words, after
the script is run, the variable ABC should have "value_of_abc" and the variable DEF should have "value_of_def". The name of the variable itself comes from the database.

Would appreciate any help from experienced users.

Thanks
# 2  
Old 01-11-2012
You could use something like this:

Code:
_params=$(
  sqlplus -s <<-!
  user/pass
  set pages 0 feed off
  select 
    parameter_name || '=' || parameter_value
  from 
  <table_name>;
!
  )

and then:

Code:
eval "$_params"

For example:

Code:
SQL> create table t(parameter_name varchar2(100), parameter_value varchar2(100));

Table created.

SQL> insert into t values ('ABC', 'value_of_abc');

1 row created.

SQL> insert into t values ('DEF', 'value_of_def');

1 row created.

SQL> commit;

Commit complete.

Code:
$ _params=$(
>   sqlplus -s <<-!
>   test/test
>   set pages 0 feed off
>   select
>     parameter_name || '=' || parameter_value
>   from
>   t;
> !
>   )
$ eval "$_params"
$ printf '%s\n' "$ABC" "$DEF"
value_of_abc
value_of_def
$

But you really need to be sure that the output produced by the SQL statement
will be always sane!
Guess what will happen if you change the last command from printf to eval:

Code:
SQL> insert into t values ('Nooo', '1; rm -rf -- *');

1 row created.

Code:
$ _params=$(
  sqlplus -s <<-!
  test/test
  set pages 0 feed off
  select
    parameter_name || '=' || parameter_value
  from
  t;
!
  )
$ printf '%s\n' "$_params"
ABC=value_of_abc
DEF=value_of_def
Nooo=1; rm -rf -- *

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh While Loop - passing variables to functions

I'm reading a text file using a while loop but when I call a function from within this loop it exits that same iteration … even though there are many more lines in the file to be read. I thought it was something to do with the IFS setting but it appears that a function call (when run... (3 Replies)
Discussion started by: user052009
3 Replies

2. Shell Programming and Scripting

Define Variables

Hi, I just define the variable in script and use those script in another script but the variable not recognize. test1.sh #!/bin/bash DB="test_db" USR="test_user" PWD="test_pwd" HST="24.254.87.12" test2.sh #!/bin/bash ./test1.sh mysql -u $USR -p $PWD -h $HST... (2 Replies)
Discussion started by: fspalero
2 Replies

3. Shell Programming and Scripting

Using a script to define variables and run multiple other scripts in succession.

I'm pretty new to scripting in Korn shell so please forgive me... What I'm trying to do is to create a script that calls multiple other ksh scripts and defines variables for text files. I need it to define my user defined variables (file paths, date & time stamps, etc that are currently in... (1 Reply)
Discussion started by: bluejwxn8
1 Replies

4. UNIX for Dummies Questions & Answers

Define variables with UNIX script

oopps! I Meant "Define Variables within a UNIX Script" What would be the best way to define a variable in a unix shell script so anyone who views this script doesn't know what value is assigned to that variable. some other location... a="/usr/lib/fileA" Unix script... sed... (5 Replies)
Discussion started by: macastor
5 Replies

5. Shell Programming and Scripting

ksh - for loop with variables

Hi, I 'm trying to send an e-mail for every different line in the .txt for i in {1..$variable} do sed -n "/$i$/p" text.txt done I have two problems about this. First one is that for loop doesn't work and the second one is that i cant get the output of sed (4 Replies)
Discussion started by: ozum
4 Replies

6. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

7. Shell Programming and Scripting

Is there a better way I could have run this loop. (For loop with two variables)

Sorry for such a dreadful title, but I'm not sure how to be more descriptive. I'm hoping some of the more gurutastic out there can take a look at a solution I came up with to a problem, and advice if there are better ways to have gone about it. To make a long story short around 20K pieces of... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

8. Shell Programming and Scripting

How to define array in Bourne shell , csh & ksh

Dear friends... Kindly if any one can help me to know the differences in definning & retreiving data from arrays in the sh,csh & ksh. I always facing problems in this issue. thanks...:) BR (3 Replies)
Discussion started by: ahmad.diab
3 Replies

9. Shell Programming and Scripting

Exactly How can we define "sh ksh csh &bash"

Hi - I m prashant. I m new in UNIX&LINUX world. I want to ask that how can we define the shell in Linux like bash,ksh,csh in Linux. What is the use of these shells. I know there are mny experts on net if you can tell me then please do me this favour and tell me about this topic. ... (1 Reply)
Discussion started by: prashantsingh
1 Replies

10. Shell Programming and Scripting

variables in ksh

I'm new to unix scripting. How would I go about pulling the first 3 characters from a variable in ksh and storing in another variable? Thanks. (9 Replies)
Discussion started by: steve6368
9 Replies
Login or Register to Ask a Question