Względne/bezwględne ścieżki katalogów

0

Hej, mam taki skrypt do napisania:

Napisz skrypt, przetwarzający dowolnie długą listę argumentów, traktowanych jako nazwy plików (z bezwzględną lub względną ścieżką katalogów), w następujący sposób. Dla pierwszego argumentu program powinien wyświetlić dwa słowa: nazwę katalogu i nazwę pliku bez ścieżki katalogów (użyj programów dirname i basename). Dla kolejnych plików, o ile ich ścieżka katalogów jest identyczna do poprzedniego pliku, skrypt wyświetla w tym samym wierszu tylko nazwę pliku bez ścieżki, a jeśli ścieżka się różni od poprzedniego pliku, to od nowego wiersza wyświetla znów ścieżkę katalogów oraz nazwę pliku. Na przykład, dla wektora argumentów:

*.c /etc/passwd /etc/shadow

powinniśmy otrzymać wynik podobny do następującego:

. fun1.c fun2.c main.c
/etc passwd shadow

Mam na razie coś takiego:

Previous=dirname$2
for var in "$@"
do
  if [ var="$1" ]
  then basename "$1"
  dirname "$1"
  else
     if [ "$Previous"==dirname$var ]
     then echo dirname$var
     else
     $Previous=dirname$var
     fi
  fi
done 

Jak wpisuję coś takiego:

prog *.pdf /home/kat1 /home/kat2
To wypluwa:

tylkojedenpdf.pdf . tylkojedenpdf.pdf . tylkojedenpdf.pdf . tylkojedenpdf.pdf .

NIe mam bladego pojęcia jak to naprawić. Proszę o jakieś wskazówki. :)

0

Mniej więcej chyba coś takiego:

actual=`dirname $1`
echo $actual 
for var in "$@"
do	
	tmp=`dirname $var`
    if [ $tmp != $actual ]; then
    	actual=`dirname $var`
		echo $actual
    fi
	echo `basename $var`
done

1 użytkowników online, w tym zalogowanych: 0, gości: 1