Zaczynam się uczyć pisania skryptów dla terminalu bash, ale nie mogę wymyślić, jak zapewnić prawidłowe działanie porównań. Używam skryptu:
echo "enter two numbers";
read a b;
echo "a=$a";
echo "b=$b";
if [ $a \> $b ];
then
echo "a is greater than b";
else
echo "b is greater than a";
fi;
Problem polega na tym, że porównuje liczbę od pierwszej cyfry, tzn. 9 jest większe niż 10, ale 1 jest większe niż 09.
Jak przekonwertować liczby na typ, aby dokonać prawdziwego porównania?
;
na końcu linii są zbędne. Nie robi nic złego, tylko strata klawiszy (chyba cieszyć wpisując średników).
10#$number
tak number=09; echo "$((10#$number))"
wyświetli, 9
a echo $((number))
wygeneruje błąd „wartość zbyt duża dla podstawy”.
>
operator wykonuje [
polecenie w celu porównania kolejności, w jakiej powinny być posortowane dwa ciągi, a nie kolejności, w jakiej byłyby sortowane jako liczby. Możesz znaleźć więcej informacji w man test
.