Assigning the output of a command to a variable, where there may be >1 line returned?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Assigning the output of a command to a variable, where there may be >1 line returned?
# 1  
Old 12-17-2009
Assigning the output of a command to a variable, where there may be >1 line returned?

Hello

I am using unix CLI commands for the Synergy CM software. The command basically searches for a folder ID and returns the names of the projects the folder sits in. The result is assigned to a variable:
Code:
FIND_USE=`ccm folder -fu -u -f "%name"-"%version" ${FOLDER_ID}`

When the command only returns one line of output, there is no problem.

However, if the folder is contained in more than one project, the command will return more results, such as the following:

agriculture-stst
agriculture-uat

My question is, when assigning the output of a command to a variable, where there is more than one line returned by the command, what will be assigned to the variable?
- Will it pick up the first line only?
- Will it pick up the last line only?
- Or does it get confused and pick up nothing at all?

Many thanks
Glyn
# 2  
Old 12-17-2009
Quote:
Originally Posted by Glyn_Mo
Hello

I am using unix CLI commands for the Synergy CM software. The command basically searches for a folder ID and returns the names of the projects the folder sits in. The result is assigned to a variable:
Code:
FIND_USE=`ccm folder -fu -u -f "%name"-"%version" ${FOLDER_ID}`

When the command only returns one line of output, there is no problem.

However, if the folder is contained in more than one project, the command will return more results, such as the following:

agriculture-stst
agriculture-uat

My question is, when assigning the output of a command to a variable, where there is more than one line returned by the command, what will be assigned to the variable?
- Will it pick up the first line only?
- Will it pick up the last line only?
- Or does it get confused and pick up nothing at all?

Many thanks
Glyn
Hello Glyn,
It picks up everything as a string.
# 3  
Old 12-22-2009
Many thanks for reply, gaurav1086. Is there any way I can parse each line returned into seperate variables?

Thanks
Glyn
# 4  
Old 12-22-2009
hello

you can parse them into an array variable.
Code:
perl -wl -e 'my @arr=`ccm folder -fu -u -f "%name"-"%version" ${FOLDER_ID}`;
foreach $res (@arr){print $res}'

Regards.
# 5  
Old 12-23-2009
i think he's in a shell, guarav...

In ksh, you can do this:

Code:
set -A find_use `ccm folder -fu -u -f "%name"-"%version" ${FOLDER_ID}`

echo ${find_use[0]}, ${find_use[1]}, ${find_use[*]}, ${#find_use}, etc...

# 6  
Old 01-22-2010
Quote:
Originally Posted by quirkasaurus
i think he's in a shell, guarav...

In ksh, you can do this:

Code:
set -A find_use `ccm folder -fu -u -f "%name"-"%version" ${FOLDER_ID}`
 
echo ${find_use[0]}, ${find_use[1]}, ${find_use[*]}, ${#find_use}, etc...

Thanks quirkasaurus, though I'm not entirely sure if that's what I'm wanting.

For each result returned by FIND_USE=`ccm folder -fu -u -f "%name"-"%version" ${FOLDER_ID}` I need to be able to perform a command upon.

i.e. I want to run a command which will use agriculture-stst as a variable and then run again and use agriulture-uat (and again if there has been anything else returned by the initial FIND_USE= ...

Am I needing to use some sort of "while" loop? I'm a bit of novice at this still..

Many thanks
Glyn

Last edited by Glyn_Mo; 01-22-2010 at 01:56 PM..
# 7  
Old 01-22-2010
You have an array. Each element is "one answer" you got back.
I don't understand what you want to do with the results but this is how to reference array elements, I changed the variable name of the array to "myarray"

Code:
let i=0
set -A myarray `ccm folder -fu -u -f "%name"-"%version" ${FOLDER_ID}`

# the variable ${#myarray[*]} == number of elements in the array
while [[ $i -lt ${#myarray[*]} ]]
do
     command1 someargument  ${myarray[i]}  # change this to run your command set correctly
     i=$((  i + 1 ))
done > outputfile

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to read the output of a command line by line and pass it as a variable?

Hi, I have some 2000 names in a table like below. Java Oracle/SQL ANSI SQL SQL,DWH,DB DB&Java And by using for loop in my code i am able to get a single word but if there is any special character or space then it is considering as a next line. I have to execute the below queries in... (10 Replies)
Discussion started by: Samah
10 Replies

2. Shell Programming and Scripting

Expect - assigning UNIX command output to a variable

Hi, I'm writing a script that connects through ssh (using "expect") and then is supposed to find whether a process on that remote machine is running or not. Here's my code (user, host and password are obviously replaced with real values in actual script): #!/usr/bin/expect set timeout 1... (3 Replies)
Discussion started by: oseri
3 Replies

3. UNIX for Dummies Questions & Answers

Tcsh command for assigning output of awk to variable

Hi I have a text file with 2 values and I am trying to assign each value to a variable and then write those to text files. So if the textfile is data.txt with 2 values x and y I want to assign mean=x, and stdev=y and then write these out in text files alongwith the id ($id has already been... (6 Replies)
Discussion started by: violin
6 Replies

4. Shell Programming and Scripting

Assigning bc output to a variable

I'm converting decimal to integer with bc, and I'd like to assign the integer output from bc to a variable 'val'. E.g. In the code below: If b is 5000.000, lines 6 and 8 will output: 5000 (5000.000+0.5)/1 | bc I'd like val to take the value 5000 though, rather than 5000.000 Does someone... (3 Replies)
Discussion started by: pina
3 Replies

5. Shell Programming and Scripting

Assigning output from awk to variable

I have a script whose contents are as below result= awk 's=100 END {print s }' echo "The result is" $result The desired output is The result is 100 My script is running without exiting and i am also not getting the desired output. Please help (5 Replies)
Discussion started by: bk_12345
5 Replies

6. Shell Programming and Scripting

Assigning output of a command to variable

When I run time -p <command>, it outputs: real X.XX user X.XX sys X.XXwhere X.XX is seconds. How I can take just that first number output, the seconds of real time, and assign that to a variable? (9 Replies)
Discussion started by: jeriryan87
9 Replies

7. Shell Programming and Scripting

Assigning output to a variable

I am new to unix shell scripting. I was trying to convert each lines in a file to upper case. I know how to convert the whole file. But here i have to do line by line. I am getting it in the below mentioned script #!/bin/bash #converting lower to upper in a file #tr "" "" <file1... (3 Replies)
Discussion started by: jpmena
3 Replies

8. Shell Programming and Scripting

Assigning output of command to a variable in shell

hi, I want to assign find command result into some temporary variable: jarPath= find /opt/lotus/notes/ -name $jarFile cho "the jar path $jarPath" where jarPath is temporary variable. Can anybody help on this. Thanks in advance ----Sankar (6 Replies)
Discussion started by: sankar reddy
6 Replies

9. Shell Programming and Scripting

assigning command output to a shell variable

I have the sql file cde.sql with the below contents: abcdefghij abcwhendefothers sdfghj when no one else when others wwhen%others exception when others Now I want to search for the strings containing when others together and ceck whether that does not occur more than once in the... (2 Replies)
Discussion started by: kprattip
2 Replies

10. Shell Programming and Scripting

Assigning output of command to a variable

Hi, I'm trying to assign the output of a command to a variable and then concat it with another string, however, it keeps overwriting the original string instead of adding on to the end of the string. Contents of test.txt --> This is a test var1="`head -n 1 test.txt`" echo $var1 (This is a... (5 Replies)
Discussion started by: oma04
5 Replies
Login or Register to Ask a Question