Shellskript: Variable einlesen und prüfen

Post Reply
Message
Author
hugenay

Shellskript: Variable einlesen und prüfen

#1 Post by hugenay »

Hi,
ich mach mir gerade ein kleines Administrationsskript, das vom User einige Eingaben erwartet. Nun will ich, dass diese geprüft werden auf bestimmte Zeichen, die von der Shell, sed etc. besonders interpretiert werden. Wenn der user etwa "asdf$asdf" eingibt, will ich diesen String prüfen und ein Escapezeichen vor das $ setzen (\), um den STring weiterverarbeiten zu können.
Womit kann ich also einen String auf diese bestimmten Zeichen prüfen und "escapen"? Oder muss ich perl auspacken?
gruss hugenay

Jochen

Re: Shellskript: Variable einlesen und prüfen

#2 Post by Jochen »

Irgendwas Shell-externes wird das einfachste sein. Shell-intern könntest Du allerdings mit ${variable//pattern/zeichenkette} arbeiten, sieh mal in der bash(1)-manpage unter "Parameter Expansion".

Ansonsten schlage ich sed(1) vor:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
CHECKED_VAR=$(echo "$VAR" | sed -e 's/\<!--no-->\<!--no-->/\<!--no-->\<!--no-->\<!--no-->\<!--no-->/g' -e 's/\<!--no-->*/\<!--no-->\<!--no-->*/' <i>usw.</i>)
</font><hr></pre></blockquote>

Allerdings hast Du in allen Fällen eine Menge zu tippern, um <i>alle</i> Möglichkeiten zu checken. Ein eigenes "quote_all_wildcards"-Kommando ist mir leider nicht bekannt. Wobei mir einfällt: Wenn Du eins bastelst, würdest Du es hier posten?

Jochen

hugenay

Re: Shellskript: Variable einlesen und prüfen

#3 Post by hugenay »

Nochwas zum Zusammenhabn erstmal:
eine Funktion des Skriptes: der user wird gefragt, welches wort er ändern will und wie es nach der Änderung nachher aussehen soll. Das heisst also, dass ich die damit eingelesene Variable an sed übergebe, und da gibts dann natürlich ne menge fallen ...

@Jochen:
Ja, sed nehm ich bisher. Hab nur Angst, dass der Benutzer was findet, das das Skript nicht verarbeiten kann und dann allerhand Unheil anrichtet.
awk wollte ich sonst nehmen und mir mal die index, match, gsub etc. funktionen anaschauen.

Was mich übrigens am meisten stört: beruflich arbeite ich nur unter solaris und beispielsweise der grep dort ist viel schwächer auf der Brust. Portieren muesste ich das skript dann auch noch, wenn ich es nicht nur unter linux nutzen will.

Vielleicht sollt ich doch mal mehr perl lernen.

Jochen

Re: Shellskript: Variable einlesen und prüfen

#4 Post by Jochen »

Tja, das mit dem Portieren ist so 'ne Sache. Die meisten GNU-Tools findest Du allerdings fix und fertig unter <a href="http://www.sunfreeware.com/" target="_blank"><!--auto-->http://www.sunfreeware.com/</a><!--auto--> als Solaris-Packages. Ansonsten tun sich zwischen Solaris und Linux der sed und der awk nicht viel. Im Falle des Falles ist die GNU-Doku sehr korrekt mit Hinweisen, was standardkonform und was eine GNU-Erweiterung ist. Wenn Du Linux nicht als Hobby, sondern mehr als Lern- und Werkstation für Solaris verwendest, könnte dich vielleicht auch Solaris 8/x86 interessieren? Das findest Du unter... ach Mist, habe den Link gerade nicht hier, liefere ich morgen nach. Sind 4 ISO-Images (Installation, Software 1&2, Dokumentation).

Wenn Du Dich mit sed(1) heimisch fühlst, dann nimm den awk nicht. Für die Tätigkeit würdest Du letzten Endes mit dem awk(1) nur sed(1) emulieren (über gsub()). Das Problem mit dem "Findet der USer nicht doch ein Loch" hängt im Prinzip der Sache, nicht im verwendeten Tool.

Jochen

Jochen

Re: Shellskript: Variable einlesen und prüfen

#5 Post by Jochen »

Ja, da ist der Link. Vielleicht hilft's Dir ja weiter - nicht, dass ich Dich von Linux wegbringen will...

<a href="ftp://ftp.fsn.hu/pub/CDROM-Images/solaris" target="_blank"><!--auto-->ftp://ftp.fsn.hu/pub/CDROM-Images/solaris</a><!--auto-->

Jochen

hugenay

Re: Shellskript: Variable einlesen und prüfen

#6 Post by hugenay »

danke Jochen, bin auch fertig mit dem Skript. Ist noch hochgradig optimierungsbedürftig. Viel zu viele Funktionen, aber die will ich langfristig in meine profile einbauen.

Von x86 Solaris halte ich leider nicht viel. Ist aber auch gar nicht nötig, denn Sun Hardware habe ich selbst und steht auch im Job genug rum. Das Dumme daran ist nur, dass ich auf den Maschinen fürs Feld nicht einfach GNU grep (das fehlt mir am meisten) Installieren kann, da gibts ne vorgeschriebene Paketliste ...

gruss hug.

Muehle

Re: Shellskript: Variable einlesen und prüfen

#7 Post by Muehle »

Hi Hug,
getopts wäre noch eine Möglichkeit , dort kannst Du festlegen welche Optionen ,Parameter usw. mitgegeben werden dürfen.
Es ist immer eine Erweiterung möglich und selbst die sinnlosesten Eingaben werden bei vernünftiger Programierung mit dem Menue der erlaubten Parameter etc. beantwortet .

bis denne Thomas

hugenay

Re: Shellskript: Variable einlesen und prüfen

#8 Post by hugenay »

danke! aber wie gesagt, ich muss ja die Scripte auch Solaris fähig machen. Muss mal schaun obs da auch getopts gibt. Ich will dort eigentlich nichts installieren.

Jochen

Re: Shellskript: Variable einlesen und prüfen

#9 Post by Jochen »

getopts sollte als shell-builtin vorhanden sein. Mindestens bei bash/ksh, ansonsten auch als /usr/bin/getopts auf Solaris 2.6 vorhanden.

Jochen

hugenay

Re: Shellskript: Variable einlesen und prüfen

#10 Post by hugenay »

ok, überzeugt, jetzt muss ich nurnoch die zeit finden .... <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

User avatar
Stormbringer
Posts: 1570
Joined: 11. Jan 2001 11:01
Location: Ruhrgebiet

Re: Shellskript: Variable einlesen und prüfen

#11 Post by Stormbringer »

Hi hugenay,

vielleicht per <!--http--><a href="http://www.google.com/" target="_blank">google</a><!--url-->, <!--http--><a href="http://www.ixquick.com/" target="_blank">ixquick</a><!--url--> oder <!--http--><a href="http://www.metager.de/" target="_blank">metager</a><!--url-->...? <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Zur Not T. Ohrner nach den Zeitdieben fragen!!! <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Gruß
Last edited by Stormbringer on 10. Nov 2001 15:50, edited 2 times in total.
Continuum Hierarchy Supervisor:
You have already been assimilated.
(Rechtschreibungsreformverweigerer!)

Post Reply