# Bash - Besondere Variablen

##### Liste der besonderen Variablen

- `$0` – Der Name des ausgeführten Scripts
- **`$1-$9`** – Die Kommandozeilen-Argumente 1-9
- **`$#`** – Die Anzahl der Kommandozeilen-Argumente
- **`$*`** – Alle Kommandozeilen-Argumente in einem String
- **`$@`** – Alle Kommandozeilen-Argumente als Array
- **`$?`** – Der Exit-Status des letzten Kommandos
- **`$$`** – Die Prozess ID der aktuellen Shell
- **`$!`** – Die Prozess ID des letzten Hintergrundkommandos
- **`$-`** – Zeigt die aktuellen Shell Optionen und Flags

##### Beispiele

```bash
#!/bin/bash
echo -e "\nDer Name des Scripts lautet "$0"\n" # $0 - Name des ausgeführten Scripts
echo -e "Es wurde(n) "$#" Kommandozeilenargument(e) mit angegeben\n" # $# - Anzahl der Kommandozeilen-Argumente
if [[ $# -ne 0 ]]
then
    x=1
    for i in $@; # $@ - Alle Kommandozeilen-Argumente als Array
    do
        echo -e "Das "$x". Kommandozeilenargument war "$i"\n"
        ((x++))
    done
    echo -e "Alle Kommandozeilenargumente waren: "$*"\n" # $* - Alle Kommandozeilen-Argumente in einem String
fi
```

```bash
#!/bin/bash
ping 192.168.0.1 -c1 -W1 > /dev/null
result=$? # $? - Exitstatus des letzten Kommandos
if [[ $result -ne 0 ]]
then
    echo "Ping failed"
else
    echo "Ping OK"
fi
```