#!/bin/bash
#
# samefile file1 file ...
# Zeige das ls -l aller Files an, 
# deren Inhalt gleich dem ersten File ist

if [ $# = 0 ]
then
    echo Usage: $(basename "$0") file ... >&2
    exit 2
fi

# zuerst einmal prüfen, ob alle genannten Files existieren
# und echte Files sind (keine Ordner, Sockets usw.)
# for ohne in ist implizit ... in "$@", d.h. über alle Worte der Befehlszeile
for file
do
    if [ ! -f "$file" ]
    then
        echo $(basename "$0"): $file: Not a file >&2
        exit 1
    fi
done

# Vergleichs-File merken und von der Befehlszeile entfernen
first="$1"
shift

# ginge auch mit for, aber wir üben einmal ein until
until [ $# = 0 ]
do
    # cmp vergleicht 2 Files auf byteweise Gleichheit, egal ob Text oder binär
    # -s ("silent") unterdrückt die Ausgabe
    # Exit code: 0 ... gleich, 1 ... verschieden, 2 ... Fehler
    if cmp -s "$1" "$first"
    then
        ls -l "$1" 
    fi
    # nächster Schleifendurchgang: Nächster File von der Befehlszeile
    shift
done
