Forum I Roku Informatyki UW


Join the forum, it's quick and easy

Forum I Roku Informatyki UW
Forum I Roku Informatyki UW
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Skrypt

4 posters

Go down

Skrypt Empty Skrypt

Post by pawel14 Thu Oct 13, 2011 3:49 pm

Napisałem taki skrypt do ćwiczenia nr 2 z pierwszych labów (trzeba wypisać wszystkie niepuste pliki zwykłe z katalogu podanego w argumentach, a jeśli nie ma argumentów to z katalogu bieżącego):
Code:
#!/bin/bash

if [ $# -eq 0 ]
then
  for i in *
  do
    if [ -f $i -a -s $i ]
    then echo $i
    fi
  done
else for f in $@
  do
    if [ -d $f ]
    then
      for j in `ls $f`
      do
        if [ -f $j -a -s $j ]
        then echo $j
        fi
      done
    else echo "Katalog nie istnieje"
    fi
  done
fi

Bez problemu wypisywane są wszystkie pliki w katalogu, w którym wywołuję skrypt. Przy podaniu jakiegokolwiek argumentu nic się nie wypisuje, chociaż w katalogach są różne pliki: *.sh, *.txt, itd. Co tu jest źle?

pawel14

Liczba postów : 118
Join date : 2010-10-12

Back to top Go down

Skrypt Empty Re: Skrypt

Post by juho Sat Oct 15, 2011 4:19 pm

Powinieneś chyba przejść najpierw do tego katalogu za pomocą polecenia "cd", a później dopiero wypisywać jego pliki iterując for f in *.

Moje rozwiązanie:
Code:
#!/bin/bash
ERR=0
if [ $# -eq 1 ]
then {
   if [ -d $1 ]
   then cd $1
   else {
            echo niepoprawny katalog
      ERR=1
   }
   fi
}
fi
if [ $ERR -eq 0 ]
then {
   for f in *
   do
      if [ -f $f ]
      then echo $f
      fi
   done
}
fi
juho
juho

Liczba postów : 177
Join date : 2010-10-13
Age : 32
Skąd : Krępiec / Lublin

http://juho-the-panda.xt.pl

Back to top Go down

Skrypt Empty Re: Skrypt

Post by pawel14 Sun Oct 16, 2011 12:26 pm

Faktycznie, teraz działa. Dzięki. Jednak w związku z tym pojawiło się nowe pytanie. Jak po takiej zmianie powrócić do katalogu, w którym wywołaliśmy skrypt?

pawel14

Liczba postów : 118
Join date : 2010-10-12

Back to top Go down

Skrypt Empty Re: Skrypt

Post by juho Sun Oct 16, 2011 2:00 pm

Po skończeniu działania skryptu katalog wróci do poprzedniego. To dlatego, że wszelkie zmiany typu deklaracja zmiennych, czy zmiana katalogu są trwałe tylko dla interpretera, który wykonuje ten skrypt (o ile nie zostaną w jakiś sposób wyeksportowane). Ciekawe jest to, że nawet gdybyś w instrukcji IF THEN nie użył nawiasów klamrowych { }, to zmiana katalogu w bloku THEN byłaby aktualna tylko wewnątrz bloku THEN, a później w skrypcie wszystko wróciłoby do początku.

Wszystko jest opisane w tym README:
http://www.mimuw.edu.pl/~mengel/SO/PUBLIC-SO/01_scripts/readme
juho
juho

Liczba postów : 177
Join date : 2010-10-13
Age : 32
Skąd : Krępiec / Lublin

http://juho-the-panda.xt.pl

Back to top Go down

Skrypt Empty Re: Skrypt

Post by pawel14 Sun Oct 16, 2011 3:07 pm

Ok, zgadza się. Jeśli skrypt wywołuję poprzez
Code:
 ./skrypt
bash skrypt
to tak się dzieje. Pamiętaj jednak, że przy wywołaniu
Code:
 . skrypt
skrypt wykonywany jest w tym samym interpreterze. Wtedy już nie powrócisz do katalogu bieżącego. Może tego nie sprecyzowałem, ale o taką właśnie sytuację mi chodziło.

pawel14

Liczba postów : 118
Join date : 2010-10-12

Back to top Go down

Skrypt Empty Re: Skrypt

Post by juho Sun Oct 16, 2011 4:28 pm

Faktycznie.. Można w takim razie zapamiętać sobie ścieżkę aktualnego katalogu w jakiejś zmiennej i później do niego wrócić przez "cd". Ścieżka ta znajduje się w zmiennej $PWD
juho
juho

Liczba postów : 177
Join date : 2010-10-13
Age : 32
Skąd : Krępiec / Lublin

http://juho-the-panda.xt.pl

Back to top Go down

Skrypt Empty Re: Skrypt

Post by Heniek Mon Oct 24, 2011 9:10 pm

Mam pytanko odnośnie ćwiczenia z 3. labu:
Ten program wymaga stworzenia dwóch potomków jednego procesu i to te 'dzieci' maja się porozumiewać, czy moze chodzi o stworzenie syna i komunikacje miedzy procesem potomnym a macierzystym

Heniek

Liczba postów : 329
Join date : 2010-10-12

Back to top Go down

Skrypt Empty Re: Skrypt

Post by Gricha Mon Oct 24, 2011 10:20 pm

Raczej druga opcja Smile
Gricha
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 32
Skąd : Myszków

Back to top Go down

Skrypt Empty Re: Skrypt

Post by Heniek Mon Oct 24, 2011 10:52 pm

Ok, teraz pytanie wnioskujesz na podstawie tego co twoj prowadzący mówił?

Heniek

Liczba postów : 329
Join date : 2010-10-12

Back to top Go down

Skrypt Empty Re: Skrypt

Post by Gricha Tue Oct 25, 2011 12:13 am

Wnioskuje na podstawie tego, że to wszystko jedno, więc po co sobie utrudniać życie
Gricha
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 32
Skąd : Myszków

Back to top Go down

Skrypt Empty Re: Skrypt

Post by Sponsored content


Sponsored content


Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum