rdmfreqfm.sh

Es entstehen $1 random Frequenzen in einer vordefinierten Range (FM). Es kann auch ein Abstand $2 zwischen den Frequenzen eingegeben werden. Dies eignet sich gut für Frequenzplanlogistik oder Experimente. 

 HOWTO: 

 $0 3 5 

 Ausagabe: 88.1 107.5 97.7 

 Der Abstand $2 besagt, dass bei Eingabe von "2" bei einer Frequenz von 90.0 MHz NICHT 89.8, 89.9 und 90.1, 90.2 generiert werden darf. 

 Beispiel: 

 anzahl="3"

abstand="5"

# BEISPIEL 1

frequenzen=$(bash lib/rdmfreqfm.sh "$anzahl" "$abstand")

# BEISPIEL 2

mapfile -t freqenzen < <(bash inc/gen_frequencies.sh "$anzahl" "$abstand")

for f in "${frequenzen[@]}"; do

 echo "Frequenz: $f MHz"

done 

 

 Script: 

 #!/bin/bash

count="$1"

scope="$2"

min="876"

max="1079"

max_attempts="500" # Maximale Anzahl von Versuchen, um eine nicht überlappende Zufallszahl zu finden

if [ -z "$2" ]; then

 scope="3"

fi

generated_numbers=()

function is_nearby {

 local number=$1

 for n in "${generated_numbers[@]}"; do

 if (( number >= n - $scope && number <= n + $scope )); then

 return 1

 fi

 done

 return 0

}

while [ ${#generated_numbers[@]} -lt $count ]; do

 attempts=0

 while true; do

 if (( attempts >= max_attempts )); then

 echo "ERROR"

 exit 1

 fi

 random_number=$(shuf -i ${min}-${max} -n 1)

 if is_nearby $random_number; then

 generated_numbers+=($random_number)

 formatted_number=$(echo "$random_number" | sed 's/\(.*\)\(.\)$/\1.\2/')

 echo "$formatted_number"

 break

 else

 (( attempts++ ))

 fi

 done

 attempts=0

done