Skip to Content
Navigation:

A stick figure smiling

Here's a preview from my zine, Bite Size Bash!! If you want to see more comics like this, sign up for my saturday comics newsletter or browse more comics!

Image of a comic. To read the full HTML alt text, click "read the transcript". get the zine!
read the transcript!

panel 1: ${...} is really powerful

person: “it can do a lot of string operations, my favourite is search/replace

panel 2: ${var}

same as $var

panel 3: ${#var}

length of the string or array var

example:

$ x=panda
$ echo ${#x}
5

panel 4: ${var/bear/panda}

search & replace. Example:

$ x="I'm a bearbear!
$ echo ${x/bear/panda} # replace 1 instance of 'bear'
I'm a pandabear!
$ echo ${x//bear/panda} # replace every instance of 'bear'
I'm a pandapanda!

panel 5: ${var:-othervar}

use a default value if var is unset/null

Example:

echo ${asdf:-some default value}

panel 6: ${var:?some error}

prints “some error” and exits if var is null or unset

panel 7: ${var#pattern} and ${var%pattern}

remove the prefix/suffix pattern from `var.

Example:

$ x=motorcycle.svg
$ echo "${x%.svg}"
motorcycle

panel 8: ${var:offset:length}

get a substring of var. Example:

$ x='panda bear time'
$ echo ${x:6:4}
time

panel 9

person: “there are LOTS more, look up ‘bash parameter expansion’!”