Here Strings
Here strings are a feature in various programming and scripting languages that allow for the creation of multi-line strings or the redirection of input directly into commands. Here’s a detailed overview:
Definition
A here string is a type of string that allows you to pass a string directly to the standard input (stdin) of a command. It simplifies the process of providing multi-line input without needing to create temporary files or use echo commands.
Syntax
In Bash, here strings are denoted by the <<<
operator. The basic syntax is:
command <<< "string"
This passes the specified string as input to the command.
Characteristics
- Multi-line Input: Here strings can handle multi-line text, treating each line as separate input.
- Simplicity: They provide a straightforward way to pass data to commands without additional piping or file management.
- Redirection: Here strings are a form of input redirection, similar to here documents (heredocs), but more concise.
Examples
-
Basic Usage:
grep "pattern" <<< "This is a test string containing pattern."
This command searches for “pattern” in the provided string.
-
Multi-line Input:
tr ' ' '\n' <<< "Line 1 Line 2 Line 3"
This command replaces spaces with newlines, outputting:
Line 1 Line 2 Line 3
-
Using Variables:
my_var="Hello World" echo <<< "$my_var"
This will output
Hello World
.
Comparison with Here Documents
While here strings and here documents (heredocs) serve similar purposes, here strings are simpler and more concise. Here documents require a delimiter to indicate the end of the input, whereas here strings do not.
Example of Here Document:
cat << EOF
This is a here document.
It can span multiple lines.
EOF