- Ignore SC2034: hostnames appears unused. Verify use (or export if used externally).
While at it I rewrote the way how the random hostname is retrieved:
First find the line number 3 lines after the line which starts with "# EOF"
This is the line where the list of hostnames start.
This makes the script a bit more robust and avoids the hard coded start
line calculation ("num=$(( $num - 16 ))").
Then list all lines from there by excluding all empty commented out
lines and the last line (which start with "'").
Use "sort -R" to randomly sort the list and from there take the last line.
That way the confusing "randline" variable calculation is avoided.
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
################################################################################
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
################################################################################
-num=$(wc -l $0)
-num=${num%% $0}
-num=$(( $num - 16 ))
-randline=$(($(date +%Y%M%S) * $$ % $num))
-hostname=$(tail -n $randline "$0" | head -1 | grep -v "'" | grep -v '^#' | grep -v '^$')
+hostname_start=$(grep -n "^# EOF" "$0")
+hostname_start=${hostname_start%%:#*}
+hostname_start=$(( hostname_start + 3 ))
+hostname=$(tail -n +$hostname_start "$0" | grep -v "'" | grep -v '^#' | grep -v '^$' | sort -R | tail -1)
[ -n "$hostname" ] && echo "$hostname" || echo "grml"
[ -n "$hostname" ] && echo "$hostname" || echo "grml"
-# EOF - line 15; now the hostnames:
+# EOF - now the hostnames:
+# shellcheck disable=SC2034