Nowe posty

Autor Wątek: Zagnieżdżenie polecenia w pętli  (Przeczytany 2739 razy)

kred9k

  • Gość
Zagnieżdżenie polecenia w pętli
« dnia: 2011-10-14, 10:41:21 »
Witam. Mam tu taki mały skrypcik i chciałbym żebyście mi pomogli zagnieździć polecenie "rm" w tym skrypcie bo żeby kasowalo mi te pliki nie umiem tego zrobić.

for dir in /sdcard/lol/*
do
read -p "czy usunąć $dir?" answer
case $answer in
* ) echo Skasowano;;
[Nn]* ) echo Nie skasowano;;
esac
done

Brix

  • Gość
Zagnieżdżenie polecenia w pętli
« Odpowiedź #1 dnia: 2011-10-14, 11:18:17 »
Jeśli dobrze rozumiem problem, możesz oddzielać polecenia pojedynczym średnikiem np.: "yes") echo "Kopiuję..." ; cp "$file" /dev/null ;; albo normalnie pisać jedno polecenie pod drugim, byle skończyć blok przez ;;

  • Gość
Zagnieżdżenie polecenia w pętli
« Odpowiedź #2 dnia: 2011-10-14, 11:20:21 »
1. Odpowiedz sobie na pytanie: kiedy to ma być kasowane? Prawdopodobnie gdy użytkownik odpowie "t" lub "T". No to już wiesz gdzie masz dopisać polecenie.

Instrukcja case jest tak skonstruowana, że wykonuje cały blok kodu między znakiem zamknięcia nawiasu na podwójnym średnikiem, o ile spełniony jest warunek określony przed znakiem zamknięcia nawiasu. Zapis:
[Tt]* )
echo Skasowano
;;
jest jak najbardziej poprawny. Myślę że powinno Ci to wystarczająco pomóc.

2. Twoja pętla działa na wszystkich plikach i katalogach w /sdcard/lol/. Nazwa zmiennej, dir, sugeruje, że Ty byś wolał działać tylko na katalogach. Jeżeli tak, musisz dodać warunek sprawdzający, czy masz do czynienia z katalogiem.

3. Aktualnie Twój skrypt nic nie wyświetli, jeżeli użytkownik udzieli odpowiedzi np. "spadaj" (ale też oczywiście pliku/katalogu nie usunie). To prawdopodobnie nie jest oczekiwane zachowanie, pomyśl więc, jak możesz mu przeciwdziałać.

kred9k

  • Gość
Zagnieżdżenie polecenia w pętli
« Odpowiedź #3 dnia: 2011-10-14, 11:30:21 »
Nie o to mi dokladnie chodzilo ale podsunelo mi to pomysl dzieki teraz juz dziala


---- Ten wątek został podzielony ----
Wszystkie oddzielone posty znajdują się tutaj.
(Podziału dokonał użytkownik roca)