С bash
#!/usr/bin/env bash
while read -rp 'Please enter 2 filenames to compare: ' -a file; do
if ! (( ${#file[*]} == 2 )); then
printf >&2 'You entered %s file, need 2 files, please try again!\n' "${#file[*]}"
elif [[ ${file[0]} == ${file[1]} ]]; then
printf >&2 'Both %s and %s are the same, please try again!\n' "${file[0]}" "${file[1]}"
elif ! [[ -e ${file[0]} && -e ${file[1]} ]]; then
printf >&2 'Either one or both of the given file does not exists, please try again!%s\n'
else
printf 'All ok!\n' && break
fi
done
printf 'You entered %s and %s\n' "${file[@]}"
Продолжает l oop, он не выходит из скрипта, пока не будут выполнены условия.
Первое условие, если файл меньше или больше 2
Второе условие, если оба файла одинаковы (одинаковое имя файла).
Третье условие, если оба файла или один из них не существует.
Если выход из скрипта необходим, когда одно из условий не выполняется, добавьте exit 1
внутри блок elif
(все они), ниже / после строки, где находится оператор printf
.