Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi @all,

weiß jemand ob es eine Funktion gibt um Befehle zu maskieren ?

Ich hab ein Skript, dem man als Parameter ein befehl mit geben kann z.B.:

/usr/sbin/useradd -u 1000 -d /home/username -c "Vorname Name" -m username 
Dieser Befehl wird in einer schleife gepackt,die dann in einer anderen Datei Befehle generiert. Von der generierten Datei werden dann die die generierten Befehle ausgeführt. Das heißt der oben genannte befehl muss zwei mal Maskiert werden
/usr/sbin/useradd -u 1000 -d /home/username -c "\\"\" Vorname Name \\"\"" -m username 

Gibt es eine Funktion, die ich ihn mein Skript einfügen kann, die mir die Maskierung abnimmt ???

Hallo,

Original geschrieben von geist_der_foren

Gibt es eine Funktion, die ich ihn mein Skript einfügen kann, die mir die Maskierung abnimmt ???

Ja, du kannst Dir den String beispielsweise einfach mittels "echo" zusammenbauen und dann in die Datei schreiben oder direkt ausführen.

Nic

Ich verstehe nicht so ganz wie ich das bewerkstelligen soll, kannst du mir mal bitte ein Beispiel posten ?

Hallo,

Vielleicht habe ich die Frage auch nicht so ganz verstanden:

echo \""\\"\\\"\\\" ergibt beispielsweise "\\"\". Damit kannst Du dir die benötigten Strings zusammenbauen.

Sofern Du innerhalb des eingegebenen Strings die Quotes entsprechen ersetzen willst (und den string nicht aus Einzelteilen zusammensetzen kannst), ist beispielswese der sed das geeignete Tool. Damit läßt sich relativ ein Pattern Matching mit der entsprechende Ersetzung erledigen.

Nic

Mein Prob ist, es soll dynamisch gehen ... Es kann ja unendlich viele "" oder \\ haben ... weist wie ich mein ?

Hallo,

Original geschrieben von Schlaubi

das ist sehr schwierig

Warum? mit sed lassen sich auch problemlos alle Vorkommen eines Patterns innerhalb einer Zeile ersetzen:

sed 's/n/x/g'

ersetzt alle "n" innerhalb einer Zeile durch ein "x".

Nic

Original geschrieben von nic_power

Hallo,

Warum? mit sed lassen sich auch problemlos alle Vorkommen eines Patterns innerhalb einer Zeile ersetzen:

sed 's/n/x/g'

ersetzt alle "n" innerhalb einer Zeile durch ein "x".

Nic

Aber wie soll ich das genau machen ??? Ich verstehe da immer noch nicht :confused:

Also gehen wir mal von meinen Beispiel aus.

beim aufruft des Skriptes muss man z.B. als Parameter "Name Vorname" mit geben.

Jetzt muss "Name Vorname" durch 2 Dateien durch !

Ich muss es folglich dann so maskieren

"\\"\"Vorname Name\\"\""

Wie kann ich das jetzt mit dem sed machen ? Da gibt es halt noch ein Prob, es kann ja mal sein, dass ein anders Konstrukt da gestellt werden möchte jetzt mal ein blödes Beispiel ""Name Vorname"" wie maskiere ich das dann ? Das meinte ich mit Dynamisch ...

Original geschrieben von nic_power

Hallo,

Warum? mit sed lassen sich auch problemlos alle Vorkommen eines Patterns innerhalb einer Zeile ersetzen:

sed 's/n/x/g'

ersetzt alle "n" innerhalb einer Zeile durch ein "x".

Nic

Ja das natürlich ja...sorry ich hab mich falsch Ausgedrückt...ich hatte hier das immer vergessen:

Original geschrieben von Schlaubi

das ist sehr schwierig...ob möglich oder nicht, kann ich nicht sagen...aber es ist nicht einfach...weil du kannst immer nur auf einen pattern eine ersetzung anwenden...

....egal ob alle patterns ersetzt werden oder nicht...

Original geschrieben von geist_der_foren

Aber wie soll ich das genau machen ??? Ich verstehe da immer noch nicht :confused:

Da gibt es halt noch ein Prob, es kann ja mal sein, dass ein anders Konstrukt da gestellt werden möchte jetzt mal ein blödes Beispiel ""Name Vorname"" wie maskiere ich das dann ? Das meinte ich mit Dynamisch ...

und ich hab mir soetwas schon gedacht....wie gesagt das ist schwierig...weil du nicht nur einen Pattern abfangen musst, sondern alle die Möglich sein könnten....und "vorauszuskripten" macht eigentlich keinen Sinn.....wie schon gesagt..mir ist nichts anderes bekannt (bitte schlagt mich wenn das nicht so ist)...außer ein aufwendiges Skript mit allen mögl. Fällen zu erstellen...

Hallo,

schlagen möchte ich Dich natürlich nicht. Aber die regexp auf denen sed basiert sind sehr mächtig. Es ist somit auch möglich, eine Regular Expression zu bilden, die zwar bei einem einfachen Auftreten des " dieses ersetzt, bei einem doppelten Auftreten ("") nur das erste Zeichen (bzw. das letzte, sofern diese paarweise auftreten). Um eine Antwort zu posten, müsste man allerdings die möglichen Kombinationen kennen, die auftreten können (ohne eine genaue Definition des Problems wird es aber generell keine allgemeingültige Lösung geben).

Das Hauptproblem bei den regexp ist, dass sie ab einer bestimmten Komplexität dazu neigen, "write only" zu sein. GGf. ist dann ein Ausweichen auf Alternativen wie awk sinnvoll (wg. der Verständlichkeit des Codes).

Nic

Ich mach mal das skript so weit feritg und poste es dann, vielleicht wird dann klar was ich machen will ...

Hi,

ich hab das endlich mitbekommen ...

NAME=\" Vorname Name \" 


NAME=`echo $NAME  | sed s/'"'/'\\\\\\\"\\\"'/g` # Tauscht ' " ' in ' \\\\\\\"\\\" '


/usr/sbin/useradd -u 1000 -d /home/username -c $NAME -m username

Danke für die Hilfe

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.