Skip to main content

Expansions

variable and parameter expansion ${}

string=01234567890abcdefgh

SyntaxOutputExplanation
${string:7}7890abcdefghStarting from index 7 [Index starts from 0]
${string:7:0} 0 character starting from index 7
${string:7:2}782 character starting from index 7
${string:7:-2}7890abcdefFrom 7th character to (last-2) character
${string: -7}bcdefghfrom (last-7)th character to end
${string: -7:0} 0 character starting from (last-7)th character to end
${string: -7:2}bc2 character starting from (last-7)th character to end
${string: -7:-2}bcdeffrom (last-7)th character to (last-2) character
${#string}19Length

Ref: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html

N:B: substring expansions with @ or * can be used with arrays.


~ Expansion

~ expands to the value of $HOME

More about ~ expansion at https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html


Brace { } Expansion

echo a{d,c,b}e
ade ace abe

Or

mkdir /usr/local/src/bash/{old,new,dist,bugs}

More about brace expansion at https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html