diff-commands.sh 658 B

1234567891011121314151617181920212223242526272829303132
  1. #!/usr/bin/env bash
  2. set -euo pipefail # bash strict mode
  3. SEP=":" # single character
  4. SCRIPT_NAME="${0##*/}"
  5. DATE="$(date +%F_%s)"
  6. DIR="/tmp/${SCRIPT_NAME}/${DATE}"
  7. display_help() {
  8. cat <<EOF
  9. Usage: ${SCRIPT_NAME} [optional arg/s] <mandatory arg/s>
  10. Dependencies: diff
  11. Examples:
  12. - ${SCRIPT_NAME} "ls ~/Desktop" ${SEP} "ls ~/Downloads/"
  13. EOF
  14. exit 2
  15. }
  16. [[ $# -lt 3 ]] && display_help
  17. mkdir -p "$DIR"
  18. mapfile -d "$SEP" -t commands <<< "$*"
  19. for i in "${!commands[@]}"; do
  20. arg="${commands[$i]}"
  21. name="command_$((i+1))"
  22. bash -c "$arg" > "${DIR}/${name}" 2> "${DIR}/${name}.err" || true
  23. done
  24. diff --color "${DIR}/command_1" "${DIR}/command_2"