Bash - instrukcja if - argumenty skryptu


(Alkifron) #1

Zrobiłem sobie wzorując się na podobnych skryptach taki skrypt.

#!/bin/bash

if [$# -ne 1]

then        

echo "niepoprawna liczba arg"	

echo "wpisz nazwę katalogu jako argument"	

exit

fi

if [-d $1]

then	

cd $1	

for plik in *	

do

 rm -fr $plik 

done

fi

Działa on tak że jeżeli poda się katalog jako argument skryptu to usuwa wszystko z katalogu. Nie jest dla mnie jasna ta linijka

if [$# -ne 1]

przeprowadzany jest test -e plik istnieje -n wyrażenie ma długość większą niż 0 i musi być podany jeden argument i działa to dobrze. Tylko nie rozumiem tego warunku. Sprawdzane jest to czy jest podany jeden argument i jeżeli jest skrypt przechodzi dalej a jeżeli są dwa to pojawia się komunikat. Tylko jakoś nielogiczne jest to dla mnie jeżeli po sprawdzeniu warunku jest

then        

echo "niepoprawna liczba arg"	

echo "wpisz nazwę katalogu jako argument"

no to jeżeli jest 1 (czyli podany zostanie jeden katalog jako argument) tak jak w instrukcji if a później jest then to czemu skrypt idzie dalej? Na przykładzie drugiej instrukcji

if [-d $1]

then   

cd $1

Tutaj wszystko jest logiczne jeżeli parametr przekazany do skryptu jest katalogiem then cd katalog.


([alex]) #2

-ne NOT EQUAL


(Alkifron) #3

Racja. Dzięki przeoczyłem to.