Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
bash: String variablen Inhalts mit fester laenge erzeugen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Drake
Gast





BeitragVerfasst am: 10. Feb 2003 12:26   Titel: bash: String variablen Inhalts mit fester laenge erzeugen

Hallo,

ich wurde gerne, wie im Betreff beschrieben, einen String erzeugen, der immer 32 Zeichen lang ist, aber einen Substring variabler Laenge enthalt (<28, >1 Zeichen)

koennte also so aussehen:

xxxxxxxx:${1}:xxxxxxxxx

sind jetzt keine 32, aber die Idee wird klar, denke ich.

Dabei stosse ich auf folgende Probleme:

wie kann ich verifizieren, das ${1} mindestens eines, aber maximal 28 Zeichen hat und keinen Doppelpunkt enthaelt ? (Vorzugsweise nur ASCII und/oder Zahlen).
Wie kann ich einen Doppelpunkt an den Anfang und an das Ende von ${1} setzten.
Wie fuelle ich den Anfang und das Ende mit "x" auf, insbesondere, wenn ${1} eine ungerade Anzahl von Zeichen hat ?

Kurz, ich habe momentan Null Plan, wie ich da ran gehen soll. bash ist ok, auch wenn mir sh lieber waere. Hat jemand eine Idee oder dokus ?
 

Jochen
Gast





BeitragVerfasst am: 10. Feb 2003 14:26   Titel: Re: bash: String variablen Inhalts mit fester laenge erzeugen

Erster Ansatz:

code:
# Prüfen, ob $1 alphanumerisch ist
LEN=`expr "$1" : '[a-zA-Z0-9][a-zA-Z0-9]*$'`
if [ $? != 0 ] ; then
echo "Inhalt von \$1 ist nicht alphanumerisch" >&2
exit 1
fi

# Doppelpunkte drumherumsetzen (und Laenge anpassen)
OUT=":"$1":"
LEN=`expr $LEN + 2`


Damit hast Du zumindest schon mal den ersten Teil: Prüfung auf AlNum (da kannst Du mit dem Inhalt der Variablen LEN auf checken, dass $1 nicht zu lang ist) und Doppelpunkte drumrumsetzen. Da musst Du eine Hilfsvariable mit ins Spiel nehmen, da Du $1 nicht direkt setzen kannst, sondern nur als Parameter beim Aufruf oder mit dem set-Kommando, aber das hat beides "Nebenwirkungen".

Bis hier ist alles rein sh. Die restlichen Zeichen ergeben sich aus Feldbreite - LEN. Dies durch 2 teilen ist Anzahl der Füllzeichen links, REST - LINKE_FUELLZEICHEN ist gleich RECHTE_FUELLZEICHEN. Und dann noch ein Mini-Skript basteln, dass bei Übergabe von Füllzeichen und Anzahl eine entsprechende Zeichenkette erstellt und die genauso vorne und hinten dranpappen wie die Doppelpunkte. Das ist jetzt aber echt Fleissarbeit, ausserdem ggf. mit awk schneller zu erledigen. Schaffst Du diesen Rest?

Jochen
 

drake
Gast





BeitragVerfasst am: 11. Feb 2003 16:03   Titel: Re: bash: String variablen Inhalts mit fester laenge erzeugen

Danke. "expr" war mir fremd. Heute scheint "man" Tag zu sein.
Die Geschichte mit den Doppelpunkten anhaengen ist mir im Nachhinein extrem Peinlich ... hab ich wieder zu kompliziert gedacht.
Ich hoffe/denke, den Rest schaffe ich. Bin noch am Raetseln wie ich eine ungerade Zeichenkette aufteile, aber da faellt mir schon was ein. Wenn nicht, werde ich mich mit dem Stand der Dinge zurueckmelden. Vorher folgt aber vermutlich meine Kriegserklaerung an "getopts"...

Vielen Dank nochmal.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy