Skip to content

Commit 2ec5ad8

Browse files
committed
Add the "Bash: Parameter expansion" page.
1 parent 6c4a818 commit 2ec5ad8

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
+++
2+
title = "Bash: Parameter expansion"
3+
+++
4+
5+
In Bash, the `$` character can be used to introduce parameter expansion.
6+
7+
Here's a brief list of such parameter expansions:
8+
9+
- Use default value: `${parameter:-word}`
10+
- Assign default value: `${parameter:=word}`
11+
- Display error if null or unset: `${parameter:?word}`
12+
- Use alternate value: `${parameter:+word}`
13+
- Substring expansion:
14+
- `${parameter:offset}`
15+
- `${parameter:offset:length}`
16+
- Names matching prefix:
17+
- `${!prefix*}`
18+
- `${!prefix@}`
19+
- List of array keys:
20+
- `${!name[@]}`
21+
- `${!name[*]}`
22+
- Parameter length: `${#parameter}`
23+
- Remove matching prefix pattern:
24+
- `${parameter#word}`
25+
- `${parameter##word}`
26+
- Remove matching suffix pattern
27+
- `${parameter%word}`
28+
- `${parameter%%word}`
29+
- Pattern substitutions:
30+
- `${parameter/pattern/string}`
31+
- `${parameter//pattern/string}`
32+
- `${parameter/#pattern/string}`
33+
- `${parameter/%pattern/string}`
34+
- Case modification:
35+
- `${parameterˆpattern}`
36+
- `${parameterˆˆpattern}`
37+
- `${parameter,pattern}`
38+
- `${parameter,,pattern}`
39+
- Parameter transformation: `${parameter@operator}`
40+
- `U`: all uppercase
41+
- `u`: first character uppercase
42+
- `L`: all lowercase
43+
- `Q`: quoted for input
44+
- `E`: expand backslash sequences
45+
- `P`: prompt string
46+
- `A`: assignment statement
47+
- `K`: quoted key-value pairs
48+
- `a`: parameter's attributes
49+
- `k`: like `K`, but keys and values are separate words
50+
51+
See [`man bash`](https://www.man7.org/linux/man-pages/man1/bash.1.html) for more information.

0 commit comments

Comments
 (0)