/ / Super Simple bash If (variable> integer) treatment (zmienna jako polecenie [duplicate] - bash

Super Simple bash If (variable> integer) treatment (zmienna jako polecenie [duplicate] - bash

Czuję, że to powinno być naprawdę proste, ale nie mogę przejść przez ten krok.

$num = 5
if [$num > 2]; then echo greater; fi

problemem jest to, że ciągle dostaję [5: command not found.

Dlaczego nie jest to ocena if [ test ] blokować poprawnie? To tak, jakby powłoka zapomniała o if i po prostu przeszli do "hej, [5 > 2 nie wygląda jak polecenie, nie mogę znaleźć [5"... ale [5 nie jest poleceniem, jest częścią if blok testowy?

Próbowałem używać różnych nawiasów i używania -gt zamiast >. Problem polega na tym, że bash nigdy nie testuje, z jakiegoś powodu ignoruje if.

Odpowiedzi:

0 dla odpowiedzi № 1

Udało się znaleźć odpowiedź: jeśli łańcuchy porównania otrzymają "polecenie nie znaleziono" - błąd

naprawdę nieoczekiwane, musi być spacja między [nawiasami i zmienną.

Nigdy bym nie zgadł.