Command Substitution

Command substitution is a feature that allows output to be expanded from a command. It can be used to assign the output of a command to a variable, or to imbed the output of a command within another command. The format for command substitution is:

					$(command)
				

where command is executed and the output is substituted for the entire $(command) construct. For example, to print the current date in a friendly format:

					$ echo The date is $(date)
					The date is Fri Jul 27 10:41:21 PST 1996
				

or see who is logged on:

					$ echo $(who —q) are logged on now
					root anatole are logged on now
				

Any commands can be used inside $(...), including pipes, I/O operators, metacharacters (wildcards), and more. We can find out how many users are logged on by using the who and wc –l commands:

					$ echo $(who | wc —l) users are logged on
					There are 3 users logged on
				

Bourne Shell Compatibility

For compatibility with the Bourne shell, the following format for command substitution can also be used:

						`command`
					

Using `. . .` command substitution, we could get the names of the files in the current directory like this:

						$ echo `ls` are in this directory
						NEWS asp bin pc are this directory
					

If you wanted a count of the files, a pipe to wc could be added:

						$ echo There are `ls | wc —l` files here
						There are 4 files here
					

Directing File Input

There is also a special form of the $(...) command that is used to substitute the contents of a file. The format for file input substitution is:

						$(<file)
					

This is equivalent to $(cat file) or `cat file`, except that it is faster, because an extra process does not have to be created to execute the cat command. A good use for this is assigning file contents to variables:

						$ cat foo
						a b c
						$ X=$(<foo)
						$ echo $X
						a b c
					

We will talk about this later in Chapter 3.

Arithmetic Operations

Another form of the $(...) command is used to substitute the output of arithmetic expressions. The value of an arithmetic expression is returned when enclosed in double parentheses and preceded with a dollar sign.

						$((arithmetic-expression))
					

Here are a few examples.

						$ echo $((3+5))
						8
						$ echo $((8192*16384%23))
						9
					

Performing arithmetic is discussed in detail in Chapter 6.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.143.40