Forum Linux.pl

Programowanie => Bash, skrypty powłoki => Wątek zaczęty przez: maciejkloda1 w 2022-01-24, 18:27:17

Tytuł: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: maciejkloda1 w 2022-01-24, 18:27:17
Proszę o pomoc w zadaniu z załączniku
Z góry dziękuje
Tytuł: Odp: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: Paweł Kraszewski w 2022-01-24, 21:06:19
1. Podziel się kodem dotąd napisanym
2. Z czym dokładnie masz problem
Tytuł: Odp: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: maciejkloda1 w 2022-01-25, 09:27:27
#!/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
Tytuł: Odp: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: maciejkloda1 w 2022-01-25, 09:31:13
a tutaj jak to wyglada
Tytuł: Odp: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: Paweł Kraszewski w 2022-01-25, 11:07:27
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.

Cytuj
ARG1 % ARG2: arithmetic remainder of ARG1 divided by ARG2
Tytuł: Odp: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: maciejkloda1 w 2022-01-25, 11:08:41
Dzięki wielkie za odpowiedz
Tytuł: Odp: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: Paweł Kraszewski w 2022-01-25, 11:16:30
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.
Tytuł: Odp: Skrypty linux Prosze o pomoc
Wiadomość wysłana przez: maciejkloda1 w 2022-01-25, 11:17:55
Zrozumiała sprawa, jeszcze raz bardzo dziękuje