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 № 1Udał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ł.