Nowe posty

xx Dystrybucja pod HP Omen (6)
2024-03-27, 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: if / for  (Przeczytany 6309 razy)

justysi_a

  • Gość
if / for
« dnia: 2005-05-31, 10:38:40 »
mam problem z uruchomieniem skryptu, probowalam na orzne sposoby ale nic nie daje rezultatow, nie wiem moze gdzies wkradl sie jakis blad.. gdyby ktos potrafil mi pomoc, to bylabym bardzo wdzieczna.. ponizej zamieszczam tresc calego skryptu

#!/bin/bash
echo Skrypt nr.4;
echo $1;
wielkosc=$1;

#>>>----------------------------------------------------------------------------------------------------------
# polecenie echo drukuje na ekranie kolejno: nazwe skryptu, nastepnie pierwszy parametr
# argument : $1 - wielkosc pliku w bajtach, której istnienie ma być sprawdzone
#----------------------------------------------------------------------------------------------------------------


if [ $# -ne \\"1\\" ]; then
echo \\"BLAD! Niewłasciwa liczba parametrów\\";
echo \\"SPOSOB UZYCIA: `basename $0` [Wpisz wielkosć pliku w bajtach] \\";
exit;

#>>>----------------------------------------------------------------------------------------------------------
# funkcja sprawdza czy liczba podanych parametrow rowna się jeden, jeżeli nie to
# polecenie echo wyswietla komunikat o bledzie i nastepuje zakonczenie (wyjscie - exit)
#----------------------------------------------------------------------------------------------------------------

# Sprawdzmy, czy wielkosc jesli liczba calkowita
if [ -z \\"`echo $1 | egrep \\'^[0-9]*$\\'`\\" ]; then
   echo \\"Wielkość musi być liczba całkowita\\"
   exit;
fi

#>>>----------------------------------------------------------------------------------------------------------
# Sprawdzmy, czy wielkosc jesli liczba calkowita
# Opłaca się uzyc wyrazenia regularnego (liczba calkowita to po prostu ciag cyfr)
# -------------------------------------------------------------------------------------------------------------


lista=(`awk -F: \\'{ print $1; }\\' /etc/passwd | sort -d`)

#>>>----------------------------------------------------------------------------------------------------------
# tablica : lista - zapisane sa do niej nazwy uzytkownikow, które znajduja się w pliku
# /etc/passwd, awk filtruje plik i drukuje na ekranie pierwsza jego kolumne - print$1
# opcja -F - zmienia wartosc separatora rekordu wejsciowego, sort sortuje wynik
# alfabetycznie
# -------------------------------------------------------------------------------------------------------------

for user in ${lista
  • }; do

   ile=`find / -size +${wielkosc}c -user ${user} |wc -l`
   echo \\"${user} ma ${ile} plików o rozmiarze większym niż ${wielkosc} bajtow.\\"
done

#>>>-----------------------------------------------------------------------------------------------------------
# Wynikiem tego polecenia będzie lista plików w systemie (szukamy od /) należących
# np. do użytkownika\\'justyna\\' i większych niż zadana ilosc bajtów.
# listę tę zliczamy za pomocą potoku do polecenia \\'wc -l\\' (ono liczy ilość linii)
# ------------------------------------------------------------------------------------------------------------

chmooreck

  • Gość
if / for
« Odpowiedź #1 dnia: 2005-05-31, 11:29:48 »
 > #!/bin/bash
 > echo Skrypt nr.4;
 > echo $1;
 > wielkosc=$1;

echo \\"Skrypt nr.4\\"

te sredniki sa tu niepotrzebne...

dalej mi sie nie chcialo czytac :-)

najprosciej powpisuj sobie co jakis czas
echo costam
i zobacz na czym ci sie sypie...

xavery

  • Gość
if / for
« Odpowiedź #2 dnia: 2005-05-31, 12:44:21 »
> najprosciej powpisuj sobie co jakis czas
 > echo costam
 > i zobacz na czym ci sie sypie...

Ewentualnie w pierwszej linijce #!/bin/bash -x

Co do ewidentnych bykow syntaktycznych, to dodalbym jeszcze brak fi przy pierwszym if\\'ie

[pl]ice

  • Gość
if / for
« Odpowiedź #3 dnia: 2005-05-31, 09:38:00 »
chce sprawdzic czy ang_x nie jest mniejsze niz zero, jak tak to 2*pi dodac do ang_x
nie wiem jak z tego petle zrobic:
...
ang_1= ....
ang_2=....
ang_3=....
ang_4=...

  ang= kat; problem ze on nie moze byc mniejszy niz 0, chcialem tak zrobic:
n=4
for i=1:n,
           if ang_n<0
                ang_n=ang_n+(2*pi)
           end
    end;  

to dziala recznie (bede miec oczekiwany rezultat)

jak zakodowac zeby ang_1,ang_2 itd. byl tam w if  jako ang_ n ? ....?


kamikaze

  • Gość
if / for
« Odpowiedź #4 dnia: 2005-05-31, 09:59:14 »
2005-05-31 09:38:00 [pl]ice napisał:

> chce sprawdzic czy ang_x nie jest mniejsze niz zero, jak tak to 2*pi dodac do ang_x
 > nie wiem jak z tego petle zrobic:
 > ...
 > ang_1= ....
 > ang_2=....
 > ang_3=....
 > ang_4=...
 >
 >   ang= kat; problem ze on nie moze byc mniejszy niz 0, chcialem tak zrobic:
 > n=4
 > for i=1:n,
 >            if ang_n<0
 >                 ang_n=ang_n+(2*pi)
 >            end
 >     end;  
 >
 > to dziala recznie (bede miec oczekiwany rezultat)
 >
 > jak zakodowac zeby ang_1,ang_2 itd. byl tam w if  jako ang_ n ? ....?
 >
 >

http://www.republika.pl/dief/main.html

khaz

  • Gość
if / for
« Odpowiedź #5 dnia: 2005-06-02, 21:17:52 »
2005-05-31 09:38:00 [pl]ice napisał:

> chce sprawdzic czy ang_x nie jest mniejsze niz zero, jak tak to 2*pi dodac do ang_x
 > nie wiem jak z tego petle zrobic:
 > ...
 > ang_1= ....
 ...
 >   ang= kat; problem ze on nie moze byc mniejszy niz 0, chcialem tak zrobic:
 > n=4
 > for i=1:n,
 >            if ang_n<0
 >                 ang_n=ang_n+(2*pi)
 >            end
 >     end;  
...
 > jak zakodowac zeby ang_1,ang_2 itd. byl tam w if  jako ang_ n ? ....?
*********************************************************************
Mam problem ze zrozumieniem Twojego pytania. Nie napisałeś w czym programujesz, może to by pomogło.
Domyślam się, że chodzi o zmienianie nazw zmiennych w kolejnych iteracjach pętli. Po mojemu to się nie da - przynajmniej ja nic o tym nie wiem. A czy w tym języku istnieją dobre kontenery? Wtedy mógłbyś dodać te zmienne do jednego kontenera (np. w Javie metodą *.add()) i np. stosując iterator przemieszczać się po kolejnych obiektach z kontenera i wykonywać pożądane iteracje. Ale chyba nie idzie Ci o Javę? Może następnym razem warto nadmienić w czym kodujesz?

Kobcio

  • Gość
if / for
« Odpowiedź #6 dnia: 2005-06-18, 18:28:16 »
Witam, mam pewien pomysl ale nie wiem czy akurat w twoim przypadku mozesz tak zrobic, mianowicie moglbys zrobic ze zmiennych ang_x tablice ang
  • , wtedy zmiana indeksu tablicy w petli nie sprawialaby zadnych problemow, ale powtarzam nie zawsze mozna tak zrobic( chociaz prawie).

Kobcio

Kobcio

  • Gość
if / for
« Odpowiedź #7 dnia: 2005-06-18, 18:31:22 »
PS. Dodaje jeszcze ( tak dla Khaza) ,ze moj pomysl odnosi sie do jezykow z grupy C (tzn. Ansi C, C++ ,C# itp) oraz z grupy Pascala.
Kobcio