Tworzenie skryptów - pytanie

0

Witam,

Kilka dni temu zaczalem swoja przygode z bashem. Przegladam rozne skrypty i napotkalem pierwszy probem. Raczej nie bedzie to ostatni, ale moze zacznijmy od tego:

Skrypt ma kopiowac wszystkie pliki z /home/Iwan/Desktop/forum do /home/Iwan/Desktop/kopiaForum tylko w przypadku, gdy katalog kopiaForum isnieje, w przeciwnym wypadku ma pojawic sie komunikat.

Znalazlem do tego takie rozwiazanie. Dziala ono poprawnie, ale w przypadku braku katalogu kopiaForum jest on automatycznie tworzony, a nie takie mialo byc zadanie.

#!/bin/bash
if [ -d $1 ];
then cp -R /home/Iwan/Desktop/forum* /home/Iwan/Desktop/kopiaForum
else echo "katalog nie istnieje"
fi

Mozecie mi jeszcze podpowiedziec o oznacza ten warunek: [ -d $1 ] Z tego co wyczytalem to -d sprawdza czy jest katalogiem. Ale co tak naprawde kryje sie pod zmienna $1? czyzby sciezka: /home/Iwan/Desktop/forum ?

I jeszcze poki pamietam: po co jest ta * przy forum, skoro bez niej skrypt dziala poprawnie?

Probowalem to zrobic troche po swojemu:

#!/bin/bash
if [ -e /home/Iwan/Desktop/kopiaForum ];
then cp -R /home/Iwan/Desktop/forum* /home/Iwan/Desktop/kopiaForum
else echo "katalog nie istnieje"
fi

I to rozwiazanie w sumie dziala w przypadku braku katalogu, ale wtedy tworzony jest katalog kopiaForum i w nim katalog forum A raczej powinny byc juz bezposrednio pliki z katalogu forum.

0

$1 to pierwszy podany argument. Czyli np. jeśli swój skrypt wywołasz tak:
./skrypt.sh /home/Iwan/Desktop/forum
to w $1 będzie /home/Iwan/Desktop/

Spróbuj takiego kodu:

#!/bin/bash
if [ -e /home/Iwan/Desktop/kopiaForum ];
then cp -R /home/Iwan/Desktop/forum/* /home/Iwan/Desktop/kopiaForum/
else echo "katalog nie istnieje"
fi
0

Właściwie to o tym, że $1 jest pierwszym parametrem czytałem.
Ale w sumie tutaj ten skrypt wywołuje się bezparametrowo, to po co tam to jest?

Podany przez ciebie kod działa. Chyba był tylko błąd przy gwiazdce.

1 użytkowników online, w tym zalogowanych: 0, gości: 1