Nowe posty

Autor Wątek: Bash: Problem z uruchomieniem skryptu  (Przeczytany 5455 razy)

boletz

  • Gość
Bash: Problem z uruchomieniem skryptu
« dnia: 2007-01-04, 12:33:15 »
A ja mam taki problem zabójczy. Zbliża się zaliczenie semestru z Systemów Operacyjnych i mam do uruchomienia skrypt. Tylko że jestem troche zielony z tego tematu bo nie chodziłem zbyt często na laborki :) Jakby ktoś mógł mi wytłumaczyć o co chodzi w poniższym skrypcie to bym był bardzo wdzięczny !!

Treść zadania:

Tworzenie nowych plików w zadanym katalogu (parametr wywołania skryptu), według
listy umieszczonej w pliku (drugi parametr wywołania skryptu). Nowe pliki mają być
zerowej wielkości (puste). Jeżeli jakiś plik już istnieje, to nie powinien zostać zniszczony.

A to jest niby ten skrypt:

      #!/bin/bash
      # Niepoprawne wywolanie
      if [ $# != 2 ]; then
       echo Usage: $0 plik_z_nazwami
       exit 1
      elif [ ! -d $1 ]; then
       echo Podany katalog nie istnieje!
       exit 1
      elif [ ! -f $2 ]; then
       echo Podany plik nie istnieje!
       exit 1
      fi
      # Tworzenie plikow
      # Istniejace pliki pozostaja nienaruszone!
      for i in $(cat $2); do

Nie wiem czy to jest w ogule poprawnie działający skrypt. Prosił'bym was żeby wytłumaczyć "Jak to działa" i jak to uruchomić.

[EDIT xis: zmiana tytułu wątku]

tick

  • Gość
Bash: Problem z uruchomieniem skryptu
« Odpowiedź #1 dnia: 2007-01-04, 13:01:30 »
 > Nie wiem czy to jest w ogule poprawnie działający skrypt. Prosił'bym was żeby wytłumaczyć
 > "Jak to działa" i jak to uruchomić.

Nie sprawdzialem go, ale na pierwszy rzut oka raczej nie robi to co powinien.
(jak bede w domu postaram sie odpowiedziec dokladniej)
A skrypt odpalasz tak:
$chmod +x plik.sh
$sh plik.sh

i to tyle...
 A tak na szybo link do kursu:
http://tnij.org/bashkurs

Pozdrawiam

gomath

  • Gość
Bash: Problem z uruchomieniem skryptu
« Odpowiedź #2 dnia: 2007-01-04, 16:41:08 »
Jeśli wkleiłeś go w całości, to skrypt nie jest skończony. W tym miejscu:

 >       for i in $(cat $2); do
 >

powinieneś dopisać część kodu odpowiedzialną za tworzenie plików.  Pętla powinna się też kończyć slowem kluczowym 'done'. Ma to więc wyglądać mniej więcej tak:

for i in $(cat $2); do
#tutaj kod odpowiedzialny za tworzenie plików
done

Mam nadzieję, że zdajesz sobie sprawę, że nikt tutaj nie rozwiąże za Ciebie zadania a conajwyżej w tym pomoże (http://rtfm.killfile.pl/#praca_domowa). Zacznij od wyszukania i przerobienia tutoriali Basha.