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
| Assignment | |
|---|---|
Assign value to variable if variable is not already set, value is returned. Combine with a : no-op to discard/ignore return value. |
${variable="value"} : ${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" apple="fruit" ${!indirect-value} |
