Mam pewne problemy ze skryptami ... jeśli ktoś mógłby mi pomóc, byłoby naprawdę dobrze!Arytmetyczny problem ze skryptem powłoki
Mój skrypt posiada:
VISITS=$((WR + RD));
SERVICE_DEMAND=$((VISITS*SERVICE_DEMAND));
A ja dostaję ten błąd:
./calc_serv_demand.sh: line 12: 0.0895406: syntax error: invalid arithmetic operator (error token is ".0895406")
Czy ktoś może mi pomóc?
Myślę, że to dlatego, że bash działa tylko z liczbą całkowitą ... Muszę jednak użyć wartości zmiennoprzecinkowych.
góry dzięki
Problem rozwiązany:
WIZYTY = $ (echo $ WR + $ RD | bc); echo $ WIZYTY
SERVICE_DEMAND = $ (echo $ WIZYTY * '$ SERVICE_TIME | bc); echo $ SERVICE_DEMAND
HUm ... to działa na sumę, to nie działa dobrze dla mnożenia. To dziwne, ponieważ sprawdziłem instrukcję bc i powinno działać! Zobacz: Mój skrypt: echo $ WR + $ RD | bc &> WIZYTY; WIZYTY = $ (echo $ WR + $ RD | bc); # działa dobrze echo $ WIZYTY SERVICE_DEMAND = $ (echo $ WIZJE * USD SERWIS_ZAK. | bc); # Powrócić dziwny błąd echo $ SERVICE_DEMAND Błąd: 0,0895406 3,42007 12,401 3,5096106 (standard_in) 1: błąd składni (standard_in) 1: nielegalny charakter: K (standard_in) 1: nielegalny charakter: H (standard_in) 1: niedozwolony znak: T ... – Alucard
@user: Ponieważ '*' ma specjalne znaczenie dla powłoki, musisz napisać '\\ *' lub ''*''. Należy również bezpośrednio przypisać wynik obliczenia do zmiennej zamiast do pliku: 'VISITS = $ (echo $ WR + $ RD | bc)'. –
@ user368453: Jeśli wykonasz "echo" z '*', wyświetli on wszystkie nazwy plików w bieżącym katalogu. Wystarczy umieścić cytaty na formularzu i będzie działać: 'SERVICE_DEMAND = $ (echo" $ VISITS * $ SERVICE_DEMAND "| bc)' –