Test: Difference between revisions
Line 3: | Line 3: | ||
== Sissejuhatus == | == Sissejuhatus == | ||
Antud referaat kirjeldab test käsu kasutamise erinevaid võimalusi, seda käsurea utiliiti kasutatakse UNIX-laadsetes operatsioonisüsteemides. Juhendi lugejal, et näidetest aru saada, peaks olema | Antud referaat kirjeldab test käsu kasutamise erinevaid võimalusi, seda käsurea utiliiti kasutatakse UNIX-laadsetes operatsioonisüsteemides. Juhendi lugejal, et näidetest aru saada, peaks olema | ||
if-else lausete koostamise oskused. | if-then-else lausete koostamise oskused. | ||
Test on käsk, mis kontrollib failide tüüpe ja võrdleb väärtusi. Test käsuga on võimalik testida failde, stringide, loogiliste avaldiste ja muutujate kindlaid tunnuseid. | Test on käsk, mis kontrollib failide tüüpe ja võrdleb väärtusi. Test käsuga on võimalik testida failde, stringide, loogiliste avaldiste ja muutujate kindlaid tunnuseid. | ||
Revision as of 19:14, 2 January 2014
Gerli Kaunissaar AK41 2013/2014
Sissejuhatus
Antud referaat kirjeldab test käsu kasutamise erinevaid võimalusi, seda käsurea utiliiti kasutatakse UNIX-laadsetes operatsioonisüsteemides. Juhendi lugejal, et näidetest aru saada, peaks olema if-then-else lausete koostamise oskused. Test on käsk, mis kontrollib failide tüüpe ja võrdleb väärtusi. Test käsuga on võimalik testida failde, stringide, loogiliste avaldiste ja muutujate kindlaid tunnuseid.
Süntaks
test EXPRESSION
või
[ EXPRESSION ]
Kui kasutada teist varjanti tuleb jälgida, et sulgude ja selle sees oleva avaldise vahel on alati tühik.
Kasutamine ja näited
Failid ja stringid
Sageli tuleb kontrollida failide, stringide ja programmide omadusi. Me saame uurida kas fail eksisteerib, mis õigused tal on (kustutamise,kirjutamise lugemise õigus). Mis tüüpi fail on (fail, kaust, programm või nimelink)? Saame kontrollida faili suurust (kas on nullist suurem). Ning kas on võimalik faile käivitada ja võrrelda? Täpsemalt on test käsu kõik võtmed on ära kirjeldatud järgnevas loetelus.
Järgnevaid funktsioone kasutatakse test lausete moodustamiseks.
-e FileName - FileName exists.(Kontrollib faili olemasolu)
Kõik ülejäänud funktsioonid annavad tagasi true, kui objekt (fail või string) on olemas ja määratud tingimus on tõene.
FUNKTSIOONID -b Filename - Returns a True exit value if the specified FileName exists and is a block special file. -c FileName - FileName is a character special file. -d FileName - FileName is a directory. -f FileName - FileName is a regular file. -g FileName - FileName's Set Group ID bit is set. -h FileName - FileName is a symbolic link. -k FileName - FileName's sticky bit is set. -L FileName - FileName is a symbolic link. -p FileName - FileName is a named pipe (FIFO). -r FileName - FileName is readable by the current process. -s FileName - FileName has a size greater than 0. -t FileDescriptor - FileDescriptor is open and associated with a terminal. -u FileName - FileName's Set User ID bit is set. -w FileName - FileName's write flag is on. However, the FileName will not be writable on a read-only file system even if test indicates true. -x FileName - FileName's execute flag is on. If the specified file exists and is a directory, the True exit value indicates that the current process has permission to change (chdir) into the directory. file1 -nt file2 - file1 is newer than file2. file1 -ot file2 - file1 is older than file2. file1 -ef file2 - file1 is another name for file2. (symbolic link or hard link) STRINGI FUNKTSIOONID -n String1 - the length of the String1 variable is nonzero. -z String1 - the length of the String1 variable is 0 (zero). String1 = String2 - String1 and String2 variables are identical. String1 != String2 - String1 and String2 variables are not identical. String1 - String1 variable is not a null string.
NÄIDE 1: Kui fail kass.txt eksisteerib, siis kustutatakse see ja ilmub ekraanile kirje faili ei ole enam.
if test -e kass.txt then rm kass.txt echo faili ei ole enam fi
NÄIDE 2: Kui faili koer.txt ei eksisteeri või on suurus 0, siis tuleb teade ekraanile. Kui aga fail on olemas ja suurus on suurem nullist, siis ei ilmu ekraanile midagi.
if test ! -s koer.txt then echo faili ei ole või on tühi fi
NÄIDE 3: Kontrollime, kas saame käivitada programmi htop'i [2]. Antud juhul on tingimus tõene ja htop käivitub.
if test -x $1 then echo "seda programmi ei ole installitud" htop $1 fi
Loogilised avaldised ja numbri funktsioonid
Muutujaid on ka stringid. Sellest hoolimata on need tähemärgid ja digitaalsekujul moodustavad nendest numbrid (täisarvud) mida saab omavahel võrrelda.
numbrid Arg1 -eq Arg2 - True if Arg1 is equal (eq) to Arg2 (Tõsi kui arg1 ja arg2 on võrdsed) Arg1 -ne Arg2 - True if Arg1 is not equal (ne) to Arg2 (Tõsi kui arg1 ja arg2 ei ole võrdsed) Arg1 -lt Arg2 - True if Arg1 is less than (lt) Arg2 (Tõsi kui arg1 on väiksem kui arg2) Arg1 -le Arg2 - True if Arg1 is less than or equal (le) to Arg2 (Tõsi kui arg1 on väiksem või võrdne kui arg2) Arg1 -gt Arg2 - True if Arg1 is greater than (gt) Arg2 (Tõsi kui arg1 on suurem kui arg2) Arg1 -ge Arg2 - True if Arg1 is greater than or equal (ge) to Arg2 (Tõsi kui arg1 on suurem või võrdne kui arg2)
Neid operaatoreid on võimalik kombineerida üleval pool loetletud funktsioonidega.
! expression - True if the expression is false expression_1 -a expression_2 - True if both of the expressions are true; it's a logical and (-a) expression_1 -o expression_2 - True if either one of the expressions is true; it's a logical or (-o)
NÄIDE 4: Argument on tõene ja ekraanile ilmub teade "esimene argument ei ole 2" . Sest võti -ne eeldab, et argumendid ei oleks võrdsed.
if [ 3 -ne 2 ] then echo "esimene argument ei ole 2" fi
NÄIDE 5: Tõene, sest võti -gt eeldab ,et arg1 on arg2 suurem.
if [ 3 -gt 2 ] then echo "on suurem" " fi
NÄIDE 6: Kui fail siil.txt eksisteerib ja kasutajal on vastav õigus, siis kustutatakse see. Aga kui ei ole enam faili, tuleb vastav teade ekraanile "faili ei ole või ei ole õigus kustutada seda".
if [ -e siil.txt ] && [ -w siil.txt ] then rm siil.txt else echo "faili ei ole või ei ole õigus kustutada seda" fi
Kokkuvõtteks
Kokkuvõtteks võib öelda, kuna testimine on väga oluline IT valdkonnas, teeb test käsk selle lihtsamaks. Sest on võimalik kontrollida ja võrrelda lihtsalt failide omadusi. Antud referaadis on näidetes kasutatud ainult if-then-else lauseid.
Kasutatud kirjandus
http://www.codewalkers.com/c/a/Miscellaneous/The-Test-in-the-UNIX-Shell/
http://unixhelp.ed.ac.uk/CGI/man-cgi?test
http://en.wikipedia.org/wiki/Test_(Unix)