Nowe posty

Autor Wątek: Skrypt sprawdzajacy wielkosc parametrow niby proste  (Przeczytany 3303 razy)

ziemekk12

  • Gość
Skrypt sprawdzajacy wielkosc parametrow niby proste
« dnia: 2011-12-29, 01:33:20 »
Witam
mecze się z napisaniem skryptu, którego zadaniem jest wyswietlenie informacji, czy liczby całkowite będące parametrami jego wywołania zostały podane w porzadku rosnacym, czy malejącym.
Już próbowałem pisać skrypty z dwoma IF, jeden jeżeli parametry idą do góry, drugi jak idą w dół. Ale za każdym razem grzęznę i nie mogę przechwycić momentu w którym wypisze prawidłowo czy ciąg jest malejący czy rosnący, czy ani taki ani taki. Nawet stosując SHIFT nie udawało mi się ponieważ później na ostatnim parametrze nie ma tego parametru.
Pomożecie coś naskrobać?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Skrypt sprawdzajacy wielkosc parametrow niby proste
« Odpowiedź #1 dnia: 2011-12-29, 12:35:27 »
#!/bin/bash

function koniec
{
  case $1 in
    0)
      echo "Zaden"
      ;;
    1)
      echo "Rosnacy"
      ;;
    2)
      echo "Malejacy"
      ;;
  esac
  exit 0
}

rosnacy=0
malejacy=0

while [ -n "$2" ]; do
  if [ $1 -lt $2 ]; then
    rosnacy=1
  fi
  if [ $1 -gt $2 ]; then
    malejacy=1
  fi
  if [ $rosnacy -eq 1 ] && [ $malejacy -eq 1 ]; then
    koniec 0
  fi
  if [ $1 -eq $2 ]; then
    koniec 0
  fi
  shift
done

if [ $rosnacy -eq 1 ]; then
  koniec 1
fi
if [ $malejacy -eq 1 ]; then
  koniec 2
fi
koniec 0

Ksanderon

  • Gość
Skrypt sprawdzajacy wielkosc parametrow niby proste
« Odpowiedź #2 dnia: 2011-12-29, 12:45:33 »
#!/bin/bash
min=$1
test="0"
#sprawdzanie malenia
for zmienna in "$@"
do
    if [ ${zmienna} -le $min ]
then
min=${zmienna}
else
test="1"
break
fi
done

if [ "$test" = "0" ]
then
  echo "maleje"
else
  echo "nie maleje"
fi
ja nie umiem basza specjalnie, więc może być nie ładnie- ale działa, skrypt sprawdza czy kolejne argumenty są  nieściśle malejące, myślę, że z resztą dasz sobie radę. Polecam manuale basza z Gentoo.

ziemekk12

  • Gość
Skrypt sprawdzajacy wielkosc parametrow niby proste
« Odpowiedź #3 dnia: 2011-12-29, 13:27:53 »
Dzięki bardzo ultr oraz Ksanderon. Kod ultr działa bezproblemowo. A idea Ksanderon jest również poprawna.
Mam pytanko jeszcze jakie polecacie materiały do nauki Linuxa do pisania skryptów? (najlepiej z szeroką listą przykładowych rozwiązań)

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Skrypt sprawdzajacy wielkosc parametrow niby proste
« Odpowiedź #4 dnia: 2011-12-29, 20:01:57 »
@ziemekk12
http://dief.republika.pl/main.html
http://tldp.org/LDP/abs/html/
a najlepiej to pisanie skryptów i w przypadku problemów google ;)

  • Gość
Skrypt sprawdzajacy wielkosc parametrow niby proste
« Odpowiedź #5 dnia: 2011-12-30, 14:58:14 »
ziemekk12: najwięcej nauczysz się przez praktykę. Wymyślaj sobie zadania, które chcesz wykonać albo algorytmy, które chcesz zaimplementować, po czym je pisz. Jak natkniesz się na problemy -- szukaj w Sieci. Najobszerniejsza i najbardziej aktualna dokumentacja zazwyczaj jest dostępna na stronie projektu. Jasne, możesz kupować książki, ale one mają tendencję do szybkiego dezaktualizowania się. No i szybko zauważysz, że do książki zaglądasz coraz mniej albo wcale.

Jeżeli chodzi o konkretne pozycje, mi się zdarzało często zaglądać do bash. Wprowadzenie. Książka ta opisuje bash-a w wersji 3.0, podczas gdy najnowsza jest wersja 4.2 (chociaż można sobie poczytać opis nowych funkcji w bash 4.0 aby być na bieżąco). Jest jednak dość trudno dostępna.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Skrypt sprawdzajacy wielkosc parametrow niby proste
« Odpowiedź #6 dnia: 2011-12-30, 18:10:57 »
Jeżeli ciąg może być tylko rosnący, albo tylko malejący, to rozwiązanie redukuje się do porównania jedynie dwóch pierwszych wartości.