#!/usr/bin/env bash function xkcdpassgen { local use_upper=true use_number=true use_symbol=true local OPTIND opt while getopts "UNS" opt; do case "$opt" in U) use_upper=false ;; N) use_number=false ;; S) use_symbol=false ;; esac done shift $((OPTIND - 1)) if [ -z "$1" ]; then echo "Usage: xkcdpassgen [-U] [-N] [-S] " >&2 echo " -U omit uppercase letter" >&2 echo " -N omit number" >&2 echo " -S omit symbol" >&2 return 1 fi local base_pass suffix="" password base_pass="$(xkcdpass -n 3 | tr -d ' ')" if $use_upper; then suffix+="$(echo {A..Z} | tr ' ' '\n' | shuf -n1)" fi if $use_number; then suffix+="$(shuf -i 0-9 -n1)" fi if $use_symbol; then suffix+="$(echo '!@#$%^&*' | fold -w1 | shuf -n1)" fi password="${base_pass}${suffix}" echo "$password" | pass insert -e "$1" } xkcdpassgen "$@"