Home assigning the output of a command to a variable in a shell script

# assigning the output of a command to a variable in a shell script

user3114665
1#
user3114665 Published in 2013-12-19 17:58:30Z
 I am new with unix and I am writing a shell script. When I run this line on the command prompt, it prints the total count of the number of processes which matches: ps -ef | awk '/siebsvc –s siebsrvr/ && !/awk/ { a++ } END { print a }'  example, the output of the above line is 2 in the command prompt. I want to write a shell script in which the output of the above line (2) is assigned to a variable, which will be later be used for comparison in an if statement. I am looking for something like output= ps -ef | awk '/siebsvc –s siebsrvr/ && !/awk/ { a++ } END { print a }' echo $output  But when i run it, it says output could not be found whereas I am expecting 2. Please help. nbro 2# nbro Reply to 2015-07-03 17:14:53Z  You can use a $ sign like: OUTPUT=$(expression)  Jed Daniels 3# Jed Daniels Reply to 2013-12-19 18:09:34Z  Try: output=$(ps -ef | awk '/siebsvc –s siebsrvr/ && !/awk/ { a++ } END { print a }'); echo $output  Wrapping your command in $( ) tells the shell to run that command, instead of attempting to set the command itself to the variable named "output". (Note that you could also use backticks command.) I can highly recommend http://tldp.org/LDP/abs/html/commandsub.html to learn more about command substitution. Also, as 1_CR correctly points out in a comment, the extra space between the equals sign and the assignment is causing it to fail. Here is a simple example on my machine of the behavior you are experiencing: jed@MBP:~$foo=$(ps -ef |head -1);echo $foo UID PID PPID C STIME TTY TIME CMD jed@MBP:~$ foo= $(ps -ef |head -1);echo$foo -bash: UID: command not found UID PID PPID C STIME TTY TIME CMD 
Jahid
4#
 If you want to do it with multiline/multiple command/s then you can do this: output=\$( bash <