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?
# 8  
Old 04-14-2019
Quote:
Originally Posted by RudiC
What does <path> stand for? Does the readlink result have 7+ / separated fields?
<path> = path to the symbolic link.
-f7 = relates to the version which is 7th field in the above path.

The output of the command is 1.0.1

Last edited by rbatte1; 04-16-2019 at 06:03 AM.. Reason: Added ICODE tags
# 9  
Old 04-15-2019
By "within a loop" do you happen to mean "behind a pipe?" also known as "inside a subshell"? That will not work. Variables inside a subshell do not get communicated to outside the subshell.
# 10  
Old 04-15-2019
Quote:
Originally Posted by Corona688
By "within a loop" do you happen to mean "behind a pipe?" also known as "inside a subshell"? That will not work. Variables inside a subshell do not get communicated to outside the subshell.
In which case is there a possibility to evaluate the output of the command to another variable.
eg.

Code:
if ( $(readlink -f <path> | cut -d '/' -f7)" == "$ver"); then


Last edited by rbatte1; 04-16-2019 at 06:04 AM.. Reason: Changed ICODE tags to CODE tags
# 11  
Old 04-15-2019
Please show us your entire script instead of showing us one line at a time.

It seems highly likely that you are setting the variable you want inside a sub-shell and that makes the assigned value invisible outside of that sub-shell. But we can't know that until we can see all of your code.
These 2 Users Gave Thanks to Don Cragun For This Post:
# 12  
Old 04-16-2019
I think the main problem is shown in post#3: the
Code:
readlink -f <path> | cut -d / -f 7

gives an empty string.
(A subshell and/or a wrong assignment would cause additional problems of course.)
If the question is for a better debugging, then I suggest to repeat the readlink -f <path> command without a following pipe. Maybe framed by some "debug" text:
Code:
echo "debug: -->$(readlink -f <path>)<--"

# 13  
Old 04-16-2019
Quote:
Originally Posted by sankasu
In which case is there a possibility to evaluate the output of the command to another variable.
If your loop is behind a pipe, that would mean stuffing your entire loop inside $( ). Or storing the result in a temporary file.

This is just guessing though. This is a really common problem which we can't rule out without seeing more of your code.

Last edited by Corona688; 04-16-2019 at 04:03 PM..
This User Gave Thanks to Corona688 For This Post:
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