Nowe posty

Autor Wątek: Skrypty linux Prosze o pomoc  (Przeczytany 1252 razy)

Offline maciejkloda1

  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Skrypty linux Prosze o pomoc
« dnia: 2022-01-24, 18:27:17 »
Proszę o pomoc w zadaniu z załączniku
Z góry dziękuje

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3047
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Skrypty linux Prosze o pomoc
« Odpowiedź #1 dnia: 2022-01-24, 21:06:19 »
1. Podziel się kodem dotąd napisanym
2. Z czym dokładnie masz problem
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline maciejkloda1

  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Skrypty linux Prosze o pomoc
« Odpowiedź #2 dnia: 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
« Ostatnia zmiana: 2022-01-25, 10:52:21 wysłana przez Paweł Kraszewski »

Offline maciejkloda1

  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Skrypty linux Prosze o pomoc
« Odpowiedź #3 dnia: 2022-01-25, 09:31:13 »
a tutaj jak to wyglada

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3047
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Skrypty linux Prosze o pomoc
« Odpowiedź #4 dnia: 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, 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
« Ostatnia zmiana: 2022-01-25, 11:13:09 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline maciejkloda1

  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Skrypty linux Prosze o pomoc
« Odpowiedź #5 dnia: 2022-01-25, 11:08:41 »
Dzięki wielkie za odpowiedz

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3047
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Skrypty linux Prosze o pomoc
« Odpowiedź #6 dnia: 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.
« Ostatnia zmiana: 2022-01-25, 11:28:19 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline maciejkloda1

  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Skrypty linux Prosze o pomoc
« Odpowiedź #7 dnia: 2022-01-25, 11:17:55 »
Zrozumiała sprawa, jeszcze raz bardzo dziękuje