# os1 practicum week 2 ## opdracht 1 ```bash #!/bin/sh echo "Hello, world!" ``` ## opdracht 2 ```bash #!/bin/sh for arg in "$@"; do echo "$arg" done ``` ## opdracht 3 ```bash #!/bin/sh usage() { echo "$0: usage: $0 -u" exit 1 } usage ``` ## opdracht 4 ```bash #!/bin/sh usage() { echo "$0: usage: $0 -u" exit 1 } [ -z "$1" ] && usage case "$1" in "-u") id -un ;; *) usage ;; esac ``` ## opdracht 5 1. ```bash $ ./treesje + a=hallo + b=42 + file args args: POSIX shell script, ASCII text executable + file func func: POSIX shell script, ASCII text executable + file hello hello: POSIX shell script, ASCII text executable + file practicum.md practicum.md: ASCII text + file treesje treesje: POSIX shell script, ASCII text executable $ ``` 2. Als `$f` niet in dubbele quotes zou staan, en `*` een bestandsnaam zou vinden met een spatie, zou `file` deze als losse argumenten zien, waardoor deze waarschijnlijk een "file not found" foutmelding zal geven. 3. Een lijst van bestanden op losse regels 4. `$*` is een variabele die alle positionele argumenten samengevoegd heeft, terwijl `*` een wildcard is. ## opdracht 6 ```bash $ # 1 $ echo "hoi" > enkel.txt $ # 2 $ (echo "hoi"; echo "hoi2"; echo "hoi3") > meerdere.txt $ # 3 $ cat meerdere.txt hoi hoi2 hoi3 $ # ik zie de inhoud van meerdere.txt $ # 4 $ cat enkel.txt meerdere.txt hoi hoi hoi2 hoi3 $ # `cat` voegt bestanden samen (concatenate) $ # 5 $ t="`cat enkel.txt`" $ # 6 $ echo "$t" hoi $ # 7 $ t="`cat meerdere.txt`" $ echo "$t" hoi hoi2 hoi3 $ ```