Bash skrytp - instrukcja if

0

Cześć!
Mam do napisania skrypt, gdzie mam sprawidzć czy w aktualnym katalogu jest przynamniej 1 plik o nazwie zaczynającej sie z zakresu „a -m”, jeśli tak, to mam wprodzadzić do pliku o nazwie „info” dokładne informacje o wszystkich plikach spełniających to kryterium i jednocześnie posiadających rozszerzenie „dat”, jeśli nie, to coś innego ma się wydarzyć (to już mam napisane - działa).
Problem pojawia się w pierszej części - za każdym razem wyskakuje mi "bash: [: too many arguments". Nie rozumiem..
Co tu jest źle?
Mój kod:

if  [ test -f [a-m]* ]; 
then 
  if [ test -f *.dat ];
    then
	-l > info.txt
else 
   BLABLA
fi
fi
5

Rozumiesz w ogóle to, co wkleiłeś do posta jako swój kod? To nawet nie jest poprawny kod. Jeśli nie rozumiesz nawet instrukcji if, to pisz od razu i nie udawaj, bo to ty potem będziesz się męczyć z odpowiedziami jakie uzyskasz. Teraz wygląda to tak, że skopiowałeś kod albo pisałeś bez namysłu.
EDIT
@yumi382 Żeby tak cię nie zostawiać z samym pytaniem, masz kawałek poprawnego kodu. Jest tu rozwiązanie pierwszej części zadania. Dalej chciałbym, żeby się wykazał. Dużo tu nie trzeba, naprawdę.

files=`find . -type f -name "[a-m]*"`

if [ -n "$files" ];
then
	echo "Pliki $files"
else
	echo "Brak plików"
fi

4

[ jest synonimem test, więc używasz jednego albo drugiego.

if test -f [a-m]*

znaczy tyle co

if [ -f [a-m]* ]

Średniki na końcu nie są potrzebne, chyba, że byś chciał napisać then w tej samej linijce:

if [ -f [a-m]* ]; then

Swoją drogą, chyba rzeczywiście nie za bardzo jarzysz co robisz. Może przeczytaj to: http://it.wiedz.net.pl/unix/shell.html ?

0

Niestety pierwszy raz mam z tym do czynienia..

Ale dziękuję Wam bardzo za pomoc! Udało mi się ogarnąć resztę.

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