Problem z instrukcją warunkową IF

Problem z instrukcją warunkową IF
bronex
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
0

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

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

Przy wywolywaniu polecenia:

Kopiuj
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...

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

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

bronex
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
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")

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
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.

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

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

bronex
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
0

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

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.