User Tools

Site Tools


bash

Bash

Useful Bash code, with no particular order

Add safeguards on every script

At the top of the file, always start your scripts with:

set -euo pipefail
  • -e: The -e option will cause a bash script to exit immediately when a command fails.
  • -o pipefail: This particular option sets the exit code of a pipeline to that of the rightmost command to exit with a non-zero status, or to zero if all commands of the pipeline exit successfully.
  • -u: This option causes the bash shell to treat unset variables as an error and exit immediately.

More info: https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/

Read passwords with feedback on a script

unset password
charcount=0
prompt="Enter your password: "
while IFS= read -p "$prompt" -r -s -n 1 char
do
    if [[ $char == $'\0' ]]
    then
        break
    fi
    if [[ $char == $'\177' ]] ; then # Backspace support
        if [ $charcount -gt 0 ] ; then
            charcount=$((charcount-1))
            prompt=$'\b \b'
            password="${password%?}"
        else
            prompt=''
        fi
    else
        charcount=$((charcount+1))
        prompt='*'
        password+="$char"
    fi
done
bash.txt · Last modified: 2023/01/17 11:27 by roger