#!/bin/bash
echo "Zadanie ze skryptów"
echo "Skrypt liczy reszte z dzielenia dwoch podanych przez ciebie liczb"
echo "Podaj pierwsza liczbe"
read L1
echo "Podaj druga liczbe"
read L2
if [ $L2 -eq 0 ];
then
echo "Druga liczba jest rowna 0 - nie mozna podzielic"
else
D= `expr $L1 % $L2`
echo "wynik dzielenia wynosi:$D"
fi
tyle dotąd mam
mam problem z wyswietlaniem sie wyniku
1. Wbrew pozorom spacje są ważne.
#!/bin/bash
X=`uname` # Uruchamia uname i wynik podstawia do X (czyli X będzie równe Linux)
# -----
X= `uname` # Uruchamia wynik działania uname (czyli próbuje uruchomić program Linux) ze zmienną środowiskową X ustawioną na łańcuch pusty.
# to ekwiwalent
X="" `uname`
# czyli
X="" Linux
Zacznij korzystać z narzędzia ShellCheck (https://www.shellcheck.net/), to łapie naprawdę dużo błędów. Ja pokazałem tylko ten bezpośrednio uniemożliwiający działanie, ShellCheck pokaże więcej (manifestujących się przy nietypowych argumentach).
2. W expr operator % to nie dzielenie.
ARG1 % ARG2: arithmetic remainder of ARG1 divided by ARG2
Na przyszłość — jeżeli będziesz od razu wklejał swoje podejście do rozwiązania pokazujące, że naprawdę próbowałeś (jak teraz) i konkretny problem, dużo szybciej dostaniesz odpowiedź.
Mamy alergię na rozwiązywanie zadań domowych od zera — a tu wykazałeś się, że wpadłeś w nieoczywistą pułapkę.
A, i taka podpowiedź na przyszłość: jak zaraz pod #!/bin/bash dasz linijkę zawierającą set -x, to skrypt w czasie pracy będzie drukował dokładnie co w danym momencie wykonuje:
#!/bin/bash
set -x
# ... reszta skryptu
Porównanie wyników dobrej i złej wersji:
+ echo 'Zadanie ze skryptów' + echo 'Zadanie ze skryptów'
Zadanie ze skryptów Zadanie ze skryptów
+ echo 'Skrypt liczy reszte z dzielenia dwoch podanych przez + echo 'Skrypt liczy reszte z dzielenia dwoch podanych przez
Skrypt liczy reszte z dzielenia dwoch podanych przez ciebie l Skrypt liczy reszte z dzielenia dwoch podanych przez ciebie l
+ echo 'Podaj pierwsza liczbe' + echo 'Podaj pierwsza liczbe'
Podaj pierwsza liczbe Podaj pierwsza liczbe
+ read L1 + read L1
+ echo 'Podaj druga liczbe' + echo 'Podaj druga liczbe'
Podaj druga liczbe Podaj druga liczbe
+ read L2 + read L2
+ '[' 3 -eq 0 ']' + '[' 3 -eq 0 ']'
++ expr 2 % 3 ++ expr 2 % 3
+ D= | + D=2
+ 2 | + echo 'wynik dzielenia wynosi:2'
./skr.sh: linia 15: 2: nie znaleziono polecenia | wynik dzielenia wynosi:2
+ echo 'wynik dzielenia wynosi:' <
wynik dzielenia wynosi: <
A, i sorki, faktycznie chodziło ci o resztę z dzielenia. Zmylił mnie tekst w wyświetlaniu wyniku.