blob: fc01b789dc927fcb5b092beb8af452ff1947bd0f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# My fledgling bash library
## number functions
###pb_number
pb_isuint is var unsigned int
pb_isint is var signed int
pb_isunumber is var unsigned float
pb_isnumber is var signed float
## colour functions
###pb_colour
pb_fg 0-254 set foreground colour
pb_bg 0-254 set background colour
pb_nc remove colours
**Usage**
source ./pb
printf %b "$(pb_bg 196)$(pb_fg 254) WHITE TEXT ON RED BACKGROUND $(pb_nc)\n"
## Bash string manipulation cheatsheet
[https://gist.github.com/magnetikonline/90d6fe30fc247ef110a1](https://gist.github.com/magnetikonline/90d6fe30fc247ef110a1)
| **Assignment** | |
| :--- | :--- |
| Assign `value` to `variable` if `variable` is not already set, `value` is returned. <br> <br>Combine with a `:` no-op to discard/ignore return `value`. | `${variable="value"}` <br>`: ${variable="value"}` |
| **Removal** | |
| Delete shortest match of `needle` from front of `haystack`. | `${haystack#needle}` |
| Delete longest match of `needle` from front of `haystack`. | `${haystack##needle}` |
| Delete shortest match of `needle` from back of `haystack`. | `${haystack%needle}` |
| Delete longest match of `needle` from back of `haystack`. | `${haystack%%needle}` |
| **Replacement** | |
| Replace first match of `needle` with `replacement` from `haystack`. | `${haystack/needle/replacement}` |
| Replace all matches of `needle` with `replacement` from `haystack`. | `${haystack//needle/replacement}` |
| If `needle` matches front of `haystack` replace with `replacement`. | `${haystack/#needle/replacement}` |
| If `needle` matches back of `haystack` replace with `replacement`. | `${haystack/%needle/replacement}` |
| **Substitution** | |
| If `variable` not set, return `value`, else `variable`. | `${variable-value}` |
| If `variable` not set _or_ empty, return `value`, else `variable`. | `${variable:-value}` |
| If `variable` set, return `value`, else null string. | `${variable+value}` |
| If `variable` set _and_ not empty, return `value`, else null string. | `${variable:+value}` |
| **Extraction** | |
| Extract `length` characters from `variable` starting at `position`. | `${variable:position:length}` |
| Return string length of `variable`. | `${#variable}` |
| **Escaping** | |
| Single quotes inside a single quoted string. | `echo 'Don'\''t break my escape!'` |
| **Indirection** | |
| Return value of variable name held in `indirect`, else `value`. | `indirect="apple"` <br>`apple="fruit"` <br>`${!indirect-value}` |
|