Difference between revisions of "Command substitution"
Jump to navigation
Jump to search
Line 34: | Line 34: | ||
echo "Current dir $(pwd) and now going back to old dir .." | echo "Current dir $(pwd) and now going back to old dir .." | ||
cd $CWD</source> | cd $CWD</source> | ||
+ | ===Command substitution and shell loops=== | ||
+ | Shell loop can use Command substitution to get input: | ||
+ | <source lang="bash">for f in $(ls /etc/*.conf) | ||
+ | do | ||
+ | echo $f | ||
+ | done</source> | ||
[[Category:Control flow loop]][[Category:Commands]] | [[Category:Control flow loop]][[Category:Commands]] |
Revision as of 04:26, 14 September 2009
Command substitution is nothing but run a shell command and store it's output to a variable or display back using echo command. For example, display date and time:
echo "Today is $(date)"
OR
echo "Computer name is $(hostname)"
Syntax
You can use the grave accent (`) to perform a command substitution. The syntax is:
`command-name`
OR
$(command-name)
Command substitution in an echo command
echo "Text $(command-name)"
OR
echo -e "List of logged on users and what they are doing:\n $(w)"
Sample outputs:
List of logged on users and what they are doing: 09:49:06 up 4:09, 3 users, load average: 0.34, 0.33, 0.28 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT vivek tty7 :0 05:40 ? 9:06m 0.09s /usr/bin/gnome- vivek pts/0 :0.0 07:02 0.00s 2:07m 0.13s bash vivek pts/2 :0.0 09:03 20:46m 0.04s 0.00s /bin/bash ./ssl
Command substitution and shell variables
You can store command output to a shell variable using the following syntax:
var=$(command-name)
Store current date and time to a variable called NOW:
NOW=$(date)
echo $NOW
Store system's host name to a variable called SERVERNAME:
SERVERNAME=$(hostname)
echo $SERVERNAME
Store current working directory name to a variable called CWD:
CWD=$(pwd)
cd /path/some/where/else
echo "Current dir $(pwd) and now going back to old dir .."
cd $CWD
Command substitution and shell loops
Shell loop can use Command substitution to get input:
for f in $(ls /etc/*.conf)
do
echo $f
done