From acc68c45fc6bfad66301471d1364c48a12f27c15 Mon Sep 17 00:00:00 2001 From: Luke LeVasseur Date: Fri, 2 Sep 2022 07:53:01 -0400 Subject: [PATCH] Add solution for directories_comparison exercise (#241) * add solution * Update question language * Update question language * Print "No difference" if no difference between dirs Co-authored-by: Luke LeVasseur --- .../shell/solutions/directories_comparison.md | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 exercises/shell/solutions/directories_comparison.md diff --git a/exercises/shell/solutions/directories_comparison.md b/exercises/shell/solutions/directories_comparison.md new file mode 100644 index 0000000..43a6490 --- /dev/null +++ b/exercises/shell/solutions/directories_comparison.md @@ -0,0 +1,69 @@ +## Directories Comparison + +### Objectives + +1. You are given two directories as arguments and the output should be any difference between the two directories + +### Solution + +``` +#!/usr/bin/env bash + + +help () { + echo "Usage: compare " + echo +} + +validate_args() { + # Ensure that 2 arguments are passed + if [ $# != 2 ] + then + help + exit 1 + fi + + i=1 + for dir in "$@" + do + # Validate existence of directories + if [ ! -d "$dir" ] + then + echo "Directory $dir does not exist" + exit 1 + fi + echo "Directory $i: $dir" + i=$((i + 1)) + done + echo +} + +compare() { + echo "Comparing directories..." + echo + diff -r "$1" "$2" + + if [ $? -eq 0 ] + then + echo "No difference" + fi + + exit 0 +} + +while getopts ":h" option; do + case $option in + h) # display Help + help + exit 0;; + \?) # invalid option + echo "Error: Invalid option" + exit 1;; + esac +done + +validate_args "$@" +compare "$1" "$2" + + +``` \ No newline at end of file