Linux Basic — Advanced Scripting
Advanced Scripting
You can now write correct, debuggable scripts. This chapter unlocks the power features — the ones that let a one-line Bash trick replace a 30-line Python helper.
What You Will Learn
By the end of this chapter you will be able to:
- Stream multi-line input into a command with here-documents (
<<EOF) - Pass a single string as stdin with here-strings (
<<<) - Treat a command’s output as a file with process substitution (
<(cmd)) - Isolate scope and side-effects with subshells
( ... )vs grouping{ ... ; } - Use
eval,coproc, andexecdeliberately — and know when not to
Topics in This Chapter
| # | Topic | Description |
|---|---|---|
| 1 | Here-Documents | <<EOF and <<-EOF for multi-line input |
| 2 | Here-Strings | <<< for single-string stdin |
| 3 | Process Substitution | <(cmd) and >(cmd) |
| 4 | Subshells & Grouping | ( ... ) vs { ... ; } |
| 5 | eval, coprocess & exec | dynamic code, two-way pipes, replace shell |
| 6 | Practice Exercises | Hands-on tasks |
When Advanced Features Pay Off
These features all solve a recurring problem: how do I plumb data between commands without temporary files or shell loops?
- A heredoc replaces
printf "line1\nline2\n..." | cmd - A here-string replaces
echo "$x" | cmd - Process substitution lets
diff,comm,pastecompare command outputs directly - A subshell isolates a
cdorset -echange so it doesn’t leak execswaps the script’s stdout to a log file without piping every line
Used together, they keep advanced scripts short, fast, and free of mktemp cleanup boilerplate.
Next → Here-Documents