Anbei ein kleines bash Snippet welches einfach Strings auf eine maximale Länge mit bestimmten Zeichen padden soll. Leider gibt es da ein Problem: Da der auszugebene String ein shell Metacharater '*' hat wird der interpretiert.
Die gewünschte Ausgabe habe ich im Snippet im Kommentar reingeschrieben. Weiss jemand wie ich die shell Interpretation verhindern kann? Ich habe schon verschiedene Dinge probiert wie Einsatz von \ als Escape char und diverse andere Versuche - leider kein Erfolg :???:
Die gewünschte Ausgabe habe ich im Snippet im Kommentar reingeschrieben. Weiss jemand wie ich die shell Interpretation verhindern kann? Ich habe schon verschiedene Dinge probiert wie Einsatz von \ als Escape char und diverse andere Versuche - leider kein Erfolg :???:
Code:
#!/bin/bash
SEPARATOR="==================================================="
function colorate () { # message
local msgLength
local seplength
local rest
msgLength=${#*}
sepLength=${#SEPARATOR}
let rest=$sepLength-$msgLength-1-5
if [[ $rest < 0 ]]; then
rest=0
fi
echo ${SEPARATOR:0:4} $* ${SEPARATOR:0:$rest}
}
touch eins1
touch eins2
f=("eins*" "zwei*" "drei*")
i=0
# print string '==== eins* ==============================================='
# ausgabe ist aber '==== eins1 eins2 ==========================================='
m=`colorate "\${f[$i]}"`
echo $m
# print string '==== eins1 eins2 ==========================================='
# ausgabe ist auch '==== eins1 eins2 ==========================================='
m=`colorate ${f[$i]}`