Script-basis
#!/usr/bin/env bash
set -euo pipefail # stop bij fouten, ongezette vars, pipe-fouten
IFS=$'\n\t'
set -e stopt bij een fout, -u faalt op ongedefinieerde variabelen,
-o pipefail laat een pipe falen als één onderdeel faalt.
Variabelen
naam="wereld"
echo "hallo ${naam}"
readonly PI=3.14
export PATH="$PATH:/opt/bin"
n=${1:-default} # eerste argument, of "default"
len=${#naam} # lengte
sub=${naam:0:3} # substring
Condities
if [[ -f bestand ]]; then echo "bestaat"; fi
# -f bestand -d map -z leeg -n niet-leeg
# -eq -ne -lt -gt numeriek
# == != =~ string / regex
[[ "$x" == a* ]] && echo "begint met a"
Loops
for f in *.txt; do echo "$f"; done
for i in {1..5}; do echo "$i"; done
while read -r line; do echo "$line"; done < bestand
until [[ $n -ge 3 ]]; do ((n++)); done
Functies
greet() {
local naam="$1"
echo "hallo $naam"
return 0
}
greet "iocalhost"
Handige idiomen
out=$(date +%F) # command substitution
files=( *.log ) # array
echo "${files[@]}" # alle elementen
cmd && echo ok || echo fout # voorwaardelijk
[[ -z "${VAR:-}" ]] && VAR=fallback
trap 'rm -f "$tmp"' EXIT # opruimen bij exit