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


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How do I assign the output of a command to a variable within a loop in bash?
# 1  
Old 04-14-2019
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 .

Code:
else
       set lnk = $(readlink -f <path> | cut -d '/' -f7)
        echo "$lnk" 
        if [[ "$lnk" == "$ver" ]]

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 , it doesnt get assigned.Hence the "if condition" after the variable assignment doesnt get evaluated.

Os Version : RHEL 6.0

Last edited by sankasu; 04-14-2019 at 05:11 PM.. Reason: An additional bracket made it to the code..removed the same
# 2  
Old 04-14-2019
Run the script with set -x and see what comes out.
# 3  
Old 04-14-2019
The output suggests the same thing which I mentioned in my problem statement.

Code:
++ readlink -f <host>:<sym lnk>
++ cut -d / -f7
+ set lnk =
+ echo

Doesnt seem to be assigning anything in the loop to the variable lnk.

Last edited by rbatte1; 04-16-2019 at 06:01 AM.. Reason: Added CODE tags
# 4  
Old 04-14-2019
Quote:
Originally Posted by sankasu
... When I run the above on command line , the execution seems to be fine and I get the desired output. ...
A bit difficult to believe. In bash, set is not used to assign variables, be it interactively or in a script. Simply drop it. And, remove the spaces around the = sign.
# 5  
Old 04-14-2019
Code:
lnk="$(readlink -f <path> | cut -d '/' -f7)"

# 6  
Old 04-14-2019
Thanks admins.. I had actually tried that but still no luck .

Code:
lnk="$(readlink -f <path> | cut -d '/' -f7)"
echo "$lnk"

Output

Code:
++ readlink -f <path>
++ cut -d / -f7
+ lnk=
+ echo ''

--- Post updated at 01:13 PM ---

Quote:
Originally Posted by RudiC
A bit difficult to believe. In bash, set is not used to assign variables, be it interactively or in a script. Simply drop it. And, remove the spaces around the = sign.
I actually meant ran the below on command line to get the desired output.

readlink -f <path> | cut -d '/' -f7

Last edited by rbatte1; 04-16-2019 at 06:02 AM.. Reason: Changed ICODE tags to CODE tags and added more CODE tags for output.
# 7  
Old 04-14-2019
What does <path> stand for? Does the readlink result have 7+ / separated fields?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Need to get a loop variable from output of a command

Hi, I am trying to get a loop counter i and set its value as the ouput of a command: i=`printmo TEST1 | grep -i TEST2 | wc -l` Then I want to use i as counter to run a loop i number of times. Like if i gets a value of 5 I'll have to run loop 5 times. But will i here be a numeric... (3 Replies)
Discussion started by: pat_pramod
3 Replies

2. Shell Programming and Scripting

Assign variable name through loop

Hi As bash does not support multidimensional arrays (?), I need some help with a problem. What I want to do is to assign variable names containing a counter in a loop . what I want to do is basically something like this: #!/bin/bash for i in {1..8}; do var$i = "some command" done... (6 Replies)
Discussion started by: Tobbev
6 Replies

3. 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

4. Shell Programming and Scripting

In bash script, how to assign output of a command to a variable while keeping tabs?

Hi, wondering if it's been asked before but didn't find matches from google. Basically I have this line: myvar=$(echo -e "a\tb") Now somehow the '\t' from the echo output gets replaced with white space and then stored in $myvar. It creates a problem for me later to use tab as delimiter to do... (2 Replies)
Discussion started by: birddie
2 Replies

5. Shell Programming and Scripting

Re-assign variable's value through which FOR LOOP loops

Hi, I've a requirement where I want to re-assign the value in the variable through which FOR LOOP loops. For e.g. Snippet of code --------------- for i in $var do echo $i >> $tempFile var=`echo $another_var | awk -F" " '{print $1}'` done I am re-assigning var so... (2 Replies)
Discussion started by: dips_ag
2 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

Assign bash command to variable

Hi I am trying to write a function that needs to be able to assign the last run shell command to a variable. The actual command string itself not the exit code of the command. I am using the bash command recall ability to do this as follows: alias pb='ps | grep ash' ... (3 Replies)
Discussion started by: Moxy
3 Replies

9. Shell Programming and Scripting

Is it possible to re-assign the variable form the loop?

Good day, everyone! I've got a small problem with re-assigning the variable form the loop. What I'm trying to do is: #!/bin/bash/ VAR1="AAA" VAR2="BBB" VAR3="CCC" for WORD in VAR1 VAR2 VAR3; do $WORD="DDD" echo $WORD done :o That's the output and error messages: -bash:... (2 Replies)
Discussion started by: Nafanja
2 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