Problem z instrukcją warunkową IF

0

Uczę się właśnie podstaw programowania w BASH'u. Skrypty pisze sie milo, przyjemnie, niestety natrafilem na nastepujacy problem przy instrukcjach warunkowych:

if [$1 == $2]; then
    echo 'Parametr1 jest równy parametrowi drugiemu'
fi  #tutaj jest linia nr 15, gdzie niby wystepuje blad

Przy wywolywaniu polecenia:

sh skrypt1.sh alex alex  #alex to oczywiscie parametry

Otrzymuje następujący komunikat:

skrypt1.sh: 15: [alex: not found

Co robie nie tak? Z technicznego punktu widzenia wszystko wydaje sie byc poprawne...

1

Może if [ $1 == $2 ] then?

0

Twoja propozycja Patryk nie dziala. Srednik jest chyba wymagany w instrukcji warunkowej if. W dodatku wyskoczyl kolejny blad:

Syntax error: end of file unexpected (expecting "fi")

1

Nie. Błędem jest brak spacji. Chodzi o to, że [ w sh to komenda lub funkcja wbudowana. Więc argumenty muszą być pooddzielane spacjami.

if [ $1 == $2 ]; then
  ...
fi

Jeśli piszesz [$1 to chce odpalić komendę [alex, która raczej u Ciebie nie istnieje.

0

Ktoby pomyslal ze taka glupota moze zawazyc :D Dzieki winerfresh ;)

0

To nie jest głupota jeśli wiesz czym jest [. Jeśli to traktujesz jako część składni to tak, będzie to głupota, ale jeśli wstawisz tam test to już będzie bardziej czytelne.

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