Assign output to dynamic variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Assign output to dynamic variable
# 1  
Old 09-26-2012
Assign output to dynamic variable

Hi Folks,

I am trying to assign a value from the command to a dynamic variable. But I am not getting the desired output.. I am sure something is wrong so i need experts advise.

There will be multiple files like /var/tmp/server_1, /var/tmp/server_2, /var/tmp/server_3, having different server names in each file

Code:
cat /var/tmp/server_1
ssp01
ssp02
ssp03
ssp04

cat /var/tmp/server_2
ssp05
ssp06
ssp07

cat /var/tmp/server_3
ssp08
ssp09

The script below does read the file one by one, but i am finding the hard part in assigning the grep output to the dynamic variable SERVERS_${i}.

Code:
                FILE_NAME="/var/tmp/server"
                COUNT=`ls -ltr $FILE_NAME*| wc -l|awk '{print $1}'`
                for (( i=1; i<=${COUNT}; i++ ))
                do
                        SERVERS_FILE="${FILE_NAME}_${i}"
                        SERVERS_${i}="`grep ssp $SERVERS_FILE`"
                        echo Server names in SERVERS_${i}: "${SERVERS}_${i}"
                done

Eventually, i wanted to see the output

Server names in SERVERS_1: ssp01 ssp02 ssp03 ssp04
Server names in SERVERS_2: ssp05 ssp06 ssp07
Server names in SERVERS_3: ssp08 ssp09


Thanks in advance for your help !!
# 2  
Old 09-26-2012
You could use something as simple as this:
Code:
for i in server_*
do
 echo Server names in $i: $(<$i)
done

# 3  
Old 09-26-2012
try with this..

Code:
SERVERS_${i}="`grep ssp $SERVERS_FILE | tr '\n' ' '`"

# 4  
Old 09-26-2012
Quote:
Originally Posted by elixir_sinari
You could use something as simple as this:
Code:
for i in server_*
do
 echo Server names in $i: $(<$i)
done

Thanks Elixir.. But i want it to be assigned to the dynamic variable SERVERS_${i} as i have to perform some other manipulation with the end result..
# 5  
Old 09-26-2012
Then, you may use an indexed array:
Code:
for i in server_*
do
 num=${i##*_}
 SERVERS[$num]=$(tr '\n' ' ' <$i)
 echo "${SERVERS[$num]}"
done

# 6  
Old 09-26-2012
If you want to assing values to variables (better: to elements of an array), you can do like that (in GNUlinux/bash):
Code:
$ FILES=( $(find /var/tmp -maxdepth 1 -type f -name "server_[0-9]*" -printf %f" ") )
$ declare -A NAMES    ###this opens an associative array
$ for SERVER in "${FILES[@]}"; do NAMES[$SERVER]=$(grep ssp "$SERVER"); done

If you want to print to screen the servers names, then:
Code:
$ for SERVER in "${FILES[@]}"; do echo -e "${SERVER} names are:\n${NAMES[$SERVER]}"; done

--
Bye
# 7  
Old 09-26-2012
Quote:
Originally Posted by pamu
try with this..

Code:
SERVERS_${i}="`grep ssp $SERVERS_FILE | tr '\n' ' '`"

Thanks Pamu.. I got the below output adding tr so i added export in front of it

./test: line 6: SERVERS_1=ssp01 ssp02 ssp03 ssp04 : command not found
_1
./test: line 6: SERVERS_2=ssp05 ssp06 ssp07 : command not found
_2
./test: line 6: SERVERS_3=ssp08 ssp09 : command not found
_3



Code:
export SERVERS_${i}="`grep ssp $SERVERS_FILE | tr '\n' ' '`"

However, i am getting the following result doing echo "${SERVERS}_${i}"

ssp01
ssp02
ssp03
ssp04_1
ssp05
ssp06
ssp07_2
ssp08
ssp09_3
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How do I assign the output of a command to a variable within a loop in bash?

In the else of the main if condition . else set lnk = $(readlink -f <path> | cut -d '/' -f7) echo "$lnk" if ] When I run the above on command line , the execution seems to be fine and I get the desired output. But when I try to assign it to a variable within a loop... (12 Replies)
Discussion started by: sankasu
12 Replies

2. Shell Programming and Scripting

How to Assign the Output of an SQL Query to a Variable?

Hi iam new to shell scripting how to declare variables as redshift query and I have to compare two counts by using if condition . ex:count=select count(*) from prd; select count(*) from prd; select count(*) from tag; can any one help me . Please use CODE tags when displaying... (1 Reply)
Discussion started by: sam526
1 Replies

3. Shell Programming and Scripting

ksh PS4 variable assign to `date` output

Hi guys, Is there a way to assign curent time to PS4 variable in ksh. My goal is to have each line produced by 'set -x' command to have a time stamp. Here is my code: $cat test #!/usr/bin/ksh export PS4="`date` " set -x echo "TRACE LINE ONE" echo "I WILL SLEEP FOR 10 SEC" sleep 10... (2 Replies)
Discussion started by: aoussenko
2 Replies

4. Shell Programming and Scripting

Unable to assign command output to variable

Code set -x STATUS="0" echo $STATUS for i in `ls -ltr Report*|awk '{ print $9 }'` do if then flg = "`head -1 "$i" |cut -c 31-33`" echo `head -1 "$i" |cut -c 31-33` echo $flg if then echo "having Fun" STATUS="2" else echo "no Fun" fi fi (2 Replies)
Discussion started by: Funkeydude
2 Replies

5. Shell Programming and Scripting

Assign dscl output to variable as an array

Greetings folks, I am trying to assign the output of a dscl command (contains name<spaces>id) to a variable as an array. Currently I am piping the output into a tmp file, then reading the tmp file into an array, then parsing the array. I would like to bypass creating the tmp file portion of... (6 Replies)
Discussion started by: macnetdaemon
6 Replies

6. Shell Programming and Scripting

assign awk output to bash variable

greetings all, I am have a heck of a time trying to accomplish a very simple thing. I have an array of "shortname<spaces>id" created from a dscl output. I want to assign shortname=word1 and id=word2. I have tried shortname=$(${textArray} | awk '{print $1}') - and get 'awk : cannot open... (3 Replies)
Discussion started by: macnetdaemon
3 Replies

7. Shell Programming and Scripting

Assign command (with pipe) output to a variable

Hi , I would like to assign command (with pipe) output to a variable. The code is as follows. The goal of the code is to get the last folder folder with a particular name pattern. myDate=`ls | grep 2009 | tail -1` echo "myDate=" $myDate However, in the presence of the pipe, the code... (3 Replies)
Discussion started by: jeff_cen
3 Replies

8. Shell Programming and Scripting

how to assign the output of the interective script to the variable

Hi, I work in ksh88. I have an interective script which prompts the user for the input and returns numeric value depending on the input provided. I need to call this script inside another script and then assign the resulting output the the variable. The call like that A=`my script` obviously... (6 Replies)
Discussion started by: aoussenko
6 Replies

9. Shell Programming and Scripting

hot to assign output to a variable

I want to assign a comment to a veriable for example my program head -1 myfile I want to assıgn output to a variable (1 Reply)
Discussion started by: walnut
1 Replies

10. UNIX for Dummies Questions & Answers

how to assign an output to a variable

Hi, I am giving a grep command, and i am getting the output. i want to store it in a variable for eg a = grep '12345' /dir/1/2/log.txt ( the output is number) b= grep 'basic' /dir/1/2/log1.txt (in this case the output is character) so how to assign the output of grep to a variable ... (1 Reply)
Discussion started by: vasikaran
1 Replies
Login or Register to Ask a Question