2013-08-08 17 views
9

Mam instrukcję if, którą muszę uruchomić, o ile wartość przechowywana w mojej zmiennej $counter jest większa niż 5.Porównaj zmienną z liczbą całkowitą w powłoce?

Oto odpowiedni fragment mojego obecnego (nie) działanie skryptu:

if $counter > 5 
then 
    echo "something" 
fi 

Pomyłka Robię to chyba oczywiste, ale z jakiegoś powodu nie mogę znaleźć rozwiązania w Internecie. . Dzięki!

Odpowiedz

20

Dobrze, że jest całkiem prosta:

if [ "$counter" -gt 5 ] 
then 
    echo "something" 
fi 
+1

Jeśli nie potrzebujesz zgodności 'sh', lepiej używać' [[i ']]' zamiast '[' i ']'. Zobacz http://mywiki.wooledge.org/BashFAQ/031 – Thomas

+0

Oczywiście. Ma to na celu zapewnienie zgodności, ponieważ nie wspomniał o bash w tytule. – konsolebox

+0

@konsolebox, musisz spojrzeć na znaczniki pod pytaniem. Tytuły bardzo często wprowadzają w błąd. –

11

arytmetyczne należy zrobić między (( i )):

if (($counter > 5)) 

Nawiasem mówiąc, można również zostawić poza $ w arytmetyce, choć nie zaszkodzi go zachować.

+0

Tak więc, chciałbym twierdzą wyrażeń warunkowych powinny być wykonane w '[[]]'. Więc kim naprawdę powinno być? Wybrałbym "[[]]". Zobacz moje argumenty tutaj: http://stackoverflow.com/a/18568726/445221. (Komentowanie dla odniesienia). – konsolebox

Powiązane problemy