Programowanie > Bash, skrypty powłoki
if / for
justysi_a:
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:
> #!/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:
> 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:
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
kamikaze:
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 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
Nawigacja
[#] Następna strona
Idź do wersji pełnej