rdsps.sh
RDS wird generiert und fix auf 8 Zeichen gesetzt. Ideal für die Weitergabe an einen RDS-Decoder. Hier kann der Name/Text an $1 übergeben werden und ein Modus für Großbuchstaben eingeschaltet werden:
$2=0 --> Großbuchstaben,
$2=1 --> normal, wie Input.
Bei kurzen Namen/Texten wird das RDS zentriert. Bei langen Namen/Texten wird das RDS gekapert auf 8 Zeichen. Untypische Zeichen fürs RDS werden ersetzt.
HOWTO:
input="Regio 8"
mode=1 # oder 0 für erzwungene Großbuchstaben
rds=$(bash lib/rdsps.sh "$input" "$mode")
echo "RDS-PS: [$rds]"
Script:
#!/bin/bash
if [ "$2" = "1" ]; then
# Entferne alle Zeichen außer Großbuchstaben, Zahlen und bestimmten Satzzeichen
var=$(echo "$1" | sed 's/[^A-Za-z0-9.,!?*-]/_/g; s/ /_/g; s/Ä/A/g; s/Ö/O/g; s/Ü/U/g; s/ä/a/g; s/ö/o/g; s/ü/u/g')
elif [ "$2" = "0" ]; then
# Ersetze Kleinbuchstaben durch Großbuchstaben und entferne alle anderen nicht gewünschten Zeichen
var=$(echo "$1" | sed 's/[a-z]/\U&/g' | sed 's/[^A-Z0-9.,!?*-]/_/g; s/ /_/g; s/Ä/A/g; s/Ö/O/g; s/Ü/U/g; s/ä/a/g; s/ö/o/g; s/ü/u/g')
fi
length=${#var}
if [ "$length" = "1" ]; then
echo "___${var}____"
elif [ "$length" = "2" ]; then
echo "___${var}___"
elif [ "$length" = "3" ]; then
echo "__${var}___"
elif [ "$length" = "4" ]; then
echo "__${var}__"
elif [ "$length" = "5" ]; then
echo "_${var}__"
elif [ "$length" = "6" ]; then
echo "_${var}_"
elif [ "$length" = "7" ]; then
echo "${var}_"
elif [ "$length" = "8" ]; then
echo "${var}"
elif [ "$length" -ge "9" ]; then
var="${var:0:8}"
echo "$var"
fi
exit 0