Lesson 6
Embedded command execution Conclusion
In this module, you learned to assign the output of a command to a variable. You also learned the difference between embedded command
execution and output redirection. We looked at some useful and non-useful ways to use embedded command execution, and explored a complex
command containing an embedded command.
Assign the output of a command to a variable using Unix Shell
In Unix-like shells, you can assign the output of a command to a variable using command substitution.
Command substitution allows you to capture the output of a command and store it in a variable for later use. There are two syntaxes for command substitution in Unix-like systems:
- Using $(command) syntax (preferred):
output=$(command)
- Using backticks (command) syntax:
output=`command`
Here's an example of assigning the output of a command to a variable:
# Using $(command) syntax
current_date=$(date)
echo "Today's date is: $current_date"
# Using backticks syntax
current_date=`date`
echo "Today's date is: $current_date"
In both examples, the date command is executed, and its output is captured and stored in the current_date variable. The echo command then prints the string "Today's date is: " followed by the stored date.
Please note that the $(command) syntax is generally preferred over backticks because it is more readable and can be easily nested.
Key commands
This module reviewed the following UNIX commands:
date
hostname
wc -l
Terms and concepts
This module introduced you to:
- embedded command execution
- Pipes
- Cat
- Environment variable
How are pipes used in Unix shell programming?
In Unix shell programming, pipes (|) are used to connect the output of one command to the input of another command, allowing you to chain multiple commands together and perform complex operations. This is known as "piping."
When you use a pipe, the standard output (stdout) of the command to the left of the pipe is connected to the standard input (stdin) of the command to the right of the pipe. This allows data to flow seamlessly between commands without the need for temporary files or variables.
Here is an example of using pipes in Unix shell programming:
cat file.txt | grep "example" | wc -l
In this example, we have three commands connected by pipes:
- cat file.txt: The cat command reads the contents of file.txt and sends it to stdout.
- grep "example": The grep command reads from stdin (connected to the output of the previous cat command), searches for lines containing the string "example", and sends the matching lines to stdout.
- wc -l: The wc -l command reads from stdin (connected to the output of the previous grep command) and counts the number of lines, printing the result to stdout.
The final result of this pipeline is the count of lines in file.txt containing the string "example".
Pipes are a powerful feature in Unix shell programming, enabling you to create complex data processing pipelines with a combination of simple commands.
In the next module, a feature of the shell called job control will be discussed.
You can use job control to manipulate processes and to push longer tasks into the background from your interactive shell or from a script.
You will also learn how to start commands that will continue to run after you logout.
Embedded Syntax - Quiz
Click the quiz link below to test your knowledge of embedded command syntax and features.
Embedded Syntaz - Quiz