user1571751
user1571751

Reputation: 21

Multiple command output into variable Bash script with $()

I reviewed the multiple threads on this and am still having issues, here is the command I'm trying to execute. Commands without the $() print the desired output to the console without issue, I just can't seem to put that value into a variable to be used later on.

MODEL3= $(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')

but

MODEL3= /usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}'  

-will output to the console. Thanks so much!

Upvotes: 2

Views: 7968

Answers (2)

Igor Chubin
Igor Chubin

Reputation: 64603

That is correct:

MODEL3=$(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')

But you can write the same without grep:

MODEL3=$(/usr/sbin/getSystemId | awk '/Product Name/{print $4}')

Now you have the result in the MODEL3 variable and you can use it further as $MODEL3:

echo "$MODEL3"

Upvotes: 5

Todd A. Jacobs
Todd A. Jacobs

Reputation: 84423

Spaces Not Legal in Variable Assignments

Variable assignments must not have spaces between the variable name, the assignment operator, and the value. Your current line says:

MODEL3= $(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')

This actually means "run the following expression with an empty environment variable, where MODEL3 is set but empty."

What you want is an actual assignment:

MODEL3=$(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')

Upvotes: 3

Related Questions