Bash Variable Expansion
This is one of those things that just doesn't stick in my head, so I'm dropping this note to remind myself. I often have trouble recalling cryptic variable names in bash, make, and perl. For my own sake, I thought I'd make a quick list of favorites and refer some sources. Maybe you'll find this useful too. Variable value, but exit if no such variable: ${var:?"error message"} Use default if variable isn't set: ${var:="default"} Get a substring : ${var: start: length} Length: ${#var} Uppercase: ${var@U} Lowercase : ${var@L} The first one is quite helpful when you expect a particular set of parameters and don't want to write if/then logic about each of them. #/bin/env bash directory=${1:? You must provide a directory to search} pattern=${2:? You must provide a search term for filenames} find ${directory} -name ${pattern} See more at the gnu shell expansion page.