Inleiding
Een shell script heeft de .sh extensie.
De eerste regel is het absolute path naar de interpreter :
#!/bin/bash
Voor een systeem boot script is het aanbevolen de standaard shell te gebruiken :
#!/bin/sh
Een schell script heeft execute privileges nodig :
chmod +x script.sh
Uitvoeren :
./script.sh
Het ECHO commando
echo "Hallo Wereld"
-n Nieuwe regel overslaan
-e Toestaan sequenties:
| \0NNN | the character whose ASCII code is NNN (octal) | 
| \\ | backslash | 
| \a | alert (bell) | 
| \b | backspace | 
| \c | suppress trailing new line | 
| \f | form feed | 
| \n | new line | 
| \r | carriage return | 
| \t | horizontal tab | 
| \v | vertical tab | 
echo -n "Alles goed? [j/n]?"
echo -e "De Letter A : \0101"
echo -e "\aKolom 1 \tKolom 2 \tKolom 3"
Het READ commando
read naam echo "Hallo $naam"
Invoer met timeout (10 seconden) :
read -t 10 -p "Naam : " naam
Invoer zonder af te beelden in Terminal :
read -s -p "Wachtwoord : " wachtwoord
Variabelen
naam="David van der Tuijn" leeftijd=27 echo "Mijn naam is $naam en ik ben $leeftijd jaar oud."
Variabelen als argument
echo "$0 is de naam van het script" echo "$1 is het eerste argument" echo "$2 is het tweede argument" echo "$3 is het derde argument" echo "Alle argumenten zijn $* of $@"
Constante variabelen
declare -r naam=davidvandertuijnInteger:
declare -i leeftijd=27
Globale shell variabelen
export naam=davidvandertuijn
echo $naam
Relationele Operatoren
| -eq | is equal to | 5 == 6 | 
| -ne | is not equal to | 5 != 6 | 
| -lt | is less than | 5 < 6 | 
| -le | is less than or equal to | 5 <= 6 | 
| -gt | is greater than | 5 > 6 | 
| -ge | is greater than or equal to | 5 <= 6 | 
Logische operatoren
| ! expressie | NOT | 
| expressie1 -a expressie2 | AND | 
| expressie1 -o expressie2 | OR | 
Rekenkundige operatoren
| 1 + 2 | Optellen | 
| 2 - 1 | Aftrekken | 
| 10 - 5 | Delen | 
| 20 % 3 | Modulo | 
| 10 \* 3 | Vermenigvuldiging | 
som=`expr 2 + 3` echo "de som van 2 plus 3 = $som"
Bestand test operatoren
| -a file | True if file exists. | 
| -b file | True if file exists and is a block special file. | 
| -c file | True if file exists and is a character special file. | 
| -d file | True if file exists and is a directory. | 
| -e file | True if file exists. | 
| -f file | True if file exists and is a regular file. | 
| -g file | True if file exists and its set-group-id bit is set. | 
| -h file | True if file exists and is a symbolic link. | 
| -k file | True if file exists and its "sticky" bit is set. | 
| -p file | True if file exists and is a named pipe (FIFO). | 
| -r file | True if file exists and is readable. | 
| -s file | True if file exists and has a size greater than zero. | 
| -t fd | True if file descriptor fd is open and refers to a terminal. | 
| -u file | True if file exists and its set-user-id bit is set. | 
| -w file | True if file exists and is writable. | 
| -x file | True if file exists and is executable. | 
| -O file | True if file exists and is owned by the effective user id. | 
| -G file | True if file exists and is owned by the effective group id. | 
| -L file | True if file exists and is a symbolic link. | 
| -S file | True if file exists and is a socket. | 
| -N file | True if file exists and has been modified since it was last read. | 
| file1 -nt file2 | True if file1 is newer (according to modification date) than file2. | 
| file1 -ot file2 | True if file1 is older than file2. | 
| file1 -ef file2 | True if file1 and file2 have the same device and inode numbers. | 
BESTAND="$1"if [ -f "$BESTAND" ] then echo "File exists." else echo "File does not exists!" fi
If statement
getal=5 if [ $getal -lt 10 ] then echo "$getal is kleiner dan 10" fi
If-else statement
if [ $1 -gt 0 ] then echo "$1 is positief" else echo "$1 is negatief" fi
If-else statement (genesteld)
if [ $1 -lt 10 ]; then echo "$1 is kleiner dan 10" elif [ $1 -lt 20 ]; then echo "$1 is groter dan 10 en kleiner dan 20" fi
For loop
for ((i=0; i<=5; i++)) do echo "Teller is $i" done
While loop
i=0 while [ $i -le 10 ] do echo "Teller is $i" i=`expr $i + 1` done
Case statement
echo -n "Alles goed? [j/n]?" read keuze case $keuze in "j") echo "Antwoord is JA";; "n") echo "Antwoord is NEE";; *) echo "Antwoord is onbekend";; esac
Functie
datum()
{
  echo `date +"%d %A %B %Y (%r)"`
}
echo "Datum : datum"
Met parameters :
leesplankje()
{
  echo "$1 is de eerste parameter"
  echo "$2 is de tweede parameter"
  echo "$3 is de derde parameter"
}
echo "Leesplankje : leesplankje aap noot mies"
Exit Status
| Return waarde gelijk aan 0. | script is succesvol uitgevoerd. | 
| Return waarde ongelijk aan 0. | script is niet succesvol uitgevoerd of een er is een fout opgetreden. | 
if [ $# -lt 1 ]; then exit 1 fiDe Exit Status wordt bewaard in $? :
echo $?
Meer informatie : Linux Shell Scripting Tutorial (LSST) v2.0
