aboutsummaryrefslogtreecommitdiff

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}