# runtxt.sh

Hier kann ein Text $1 in einem textbasierten Programm durchlaufen. Hierbei lässt sich die Länge der anzuzeigenden Zeichen mit $2 bestimmen und die Schnelligkeit in ms in $3. Ideal für z. B. Displays mit begrenzter Ausgabelänge. Hier kann der Text ganz einfach durchlaufen.  
$1 --&gt; Text, der gescrollt wird   
$2 --&gt; Blockgröße (sichtbare Länge)   
$3 --&gt; Pausenzeit pro Schritt (in ms)

HOWTO:

```bash
$0 "Hallo Welt!" 8 100
```

Beispiel:

```bash
text="System läuft normal, keine Vorkommnisse"
display="16"
ms="120"

bash src/runtxt.sh "$text" "$display" "$ms"
```

Script:

```bash
#!/bin/bash

if [ -z "$3" ]; then
    exit 1
fi

text="$1"
block_size="$2"
sleep_time=$(echo "scale=3; $3 / 1000" | bc)

# Den Text erweitern, um eine ausreichende Anzahl von Leerzeichen für nahtloses Scrollen hinzuzufügen
padded_text="$(printf '%*s' $block_size)${text}"
padded_length=${#padded_text}

while true; do
    for (( i=0; i<padded_length; i++ )); do
        # Substring von i bis i+block_size Zeichen
        if (( i + block_size <= padded_length )); then
            substring="${padded_text:i:block_size}"
        else
            substring="${padded_text:i}"
            remaining_length=$((block_size - ${#substring}))
            substring="${substring}${padded_text:0:remaining_length}"
        fi
        echo -ne "$substring\r"
        sleep "$sleep_time"
    done
done

exit 0
```