Oversigt over Linux shell funktionalitet. Jeg bruger det som reference til scripts. Kommandoer er generelle og skulle virke de fleste steder. Der kan dog være mindre forskelle afhængigt af den valgte fortolker. Nogle af regnefunktionerne virker kun i Bash.
Tilstandstest
Alle test afgrænses af firkant paranteser [
and ]
, som her:
if [ true ] then # gør noget her fi
Brug af dobbelte firkant paranteser [[
and ]]
virker med Bash, Zsh og Korn.
Uddybning http://mywiki.wooledge.org/BashFAQ/031
Dette er vigtigt: Sørg for mellemrum før og efter paranteserne.
Fil test
Test på filer:
-d file Test om file er en mappe -e file Test om file findes -f file Test om file er en almindelig fil -r file Test om file kan læses -w file Test om file kan ændres -x file Test om file kan køres
Som eksempel kan – hvis du har en fil med navnet foo
, kan du test om filen kan læses:
if [ -r foo ] then # gør noget her fi
Tekst test
s1 Test om s1 indholder tekst s1 = s2 Test om s1 er identisk med s2 s1 != s2 Test om s1 er forskellig fra s2 -n s1 Test om s1 har en længde -z s1 Test om s1 er tom
Eksempel til at teste om to variable er ens:
if [ $foo = $bar ] then # gør noget her fi
Denne test skriver SAND:
s1= if [ -n $s1 ] then echo "SAND" else echo "FALSK" fi
Denne test skriver FALSK:
s1=bar if [ -z "$s1" ] then echo "SAND" else echo "FALSK" fi
Ovenstående illustrerer også brugen af else
sammen med if
test.
Udregninger og tal test
n1 -eq n2 Test om n1 er identisk med n2 n1 -ne n2 Test om n1 er forskellig fra n2 n1 -lt n2 Test om n1 er mindre end n2 n1 -le n2 Test om n1 er mindre end eller lig med n2 n1 -gt n2 Test om n1 er større end n2 n1 -ge n2 Test om n1 er mindre end eller lig med n2
Et eksempel på en test der checker om tallene er ens:
if [ $n1 -eq $n2 ] then # gør noget her fi
Boolsk and/or/not
Boolske and/or/not operatorer der kan bruges:
-a and -o or ! not
Eksempel på and
operator:
if [ $num -gt 0 -a $num -lt 10 ] then # gør noget her fi
Gruppering af operatorer
Hvis det er nødvendigt at udføre flere test på en gang operatorer grupperes som det ses a nedenstående eksempel.
a=5 b=20 if test \( $a -gt 0 -a $a -lt 10 \) -o \( $b -gt 0 -a $b -lt 20 \) then echo "SAND" else echo "FALSK" fi
Testen fil skrive “SAND”.
Linux Bourne shell if, then, else, else if (elif) syntax
En ting der varierer fra sprog til spog er if / then / else / else if / elseif udtrykket. I en Bourne shell, er “else if” en “elif”, så i en Bourne shell if then else if udtrykket ser ud som dette eksempel:
if [ -e 'foo' ] then echo "hvis var sand" elif [ -e 'bar' ] then echo "eller hvis var sand" else echo "helt frem til ellers" fi
Bourne shell matematik
I Bourne shell bliver matematik/regning udført ved at bruge en expr
udtryk som nedenstående:
sum=`expr $foo + $bar` half=`expr $foo / 2` times=`expr $foo \* 2`
Tæller
(( count++ ))
Der må ikke være mellem før eller efter lighedstegn i tildelingen af værdi til en varibel.
Ekstra
cmd1 && cmd2 Kør cmd1; hvis returværdi er nul (success), kør cmd2 cmd1 || cmd2 Kør cmd1; hvis returværdi er forskellig fra nul, kør cmd2 cmd1 & cmd2 Kør cmd1 også cmd2 (ls -1) Kør kommando "ls -1" i en underskal