Command substitution (Bash)
Naar navigatie springen
Naar zoeken springen
In Bash-programming kom je al snel de volgende expressies tegen:
`...`
- Backticks command substitution$(...)
- Parenthesis command substitution${...}
- Curly braces substitution of Parameter expansion.
Dit zijn alledrie voorbeelden van substitution of expansion. Het betekent zoiets als Evalueer eerst de expressie hierbinnen.
Om het leven eenvoudig te maken:
- Backtics zijn achterhaald binnen Bash (ze zijn echter nog steeds onderdeel van de POSIX-standaard). Daarnaast zijn ze lastiger te gebruiken en kun je ze bv. niet nesten
- Curly braces zijn bedoeld voor parameter substitution (wo/ find-&-replace) - Niet het onderwerp van dit artikel
Gebruik daarom parenthesis command substitution - De rest van dit hoofdstuk is hiertoe beperkt, tenzij anders aangegeven.
man bash
zegt vanaf regel 1.332 het volgende over command substitution:
Command substitution allows the output of a command to replace the command name. There are two forms: $(command) or `command` Bash performs the expansion by executing command in a subshell environment and replacing the command substi‐ tution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they may be removed during word splitting. The command substitution $(cat file) can be re‐ placed by the equivalent but faster $(< file). When the old-style backquote form of substitution is used, backslash retains its literal meaning except when followed by $, `, or \. The first backquote not preceded by a backslash terminates the command substitu‐ tion. When using the $(command) form, all characters between the parentheses make up the command; none are treated specially. Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes. If the substitution appears within double quotes, word splitting and pathname expansion are not performed on the results.