WinFuture-Forum.de: Shell-befehl "aufbauen" - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Linux
Seite 1 von 1

Shell-befehl "aufbauen"


#1 Mitglied ist offline   BadAss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 405
  • Beigetreten: 11. Mai 05
  • Reputation: 0

geschrieben 13. Mai 2008 - 16:07

Hallo Community,

Ich will einen Befehl durch eine for-Schleife aufbauen, z.B. so:

cmd="echo eins zwei drei vier"
for i in $*; do cmd=$cmd" | egrep -i $i"; done;
$cmd


Beim Aufruf mit "zwei" als Parameter erstellt bash den String richtig:

echo eins zwei drei vier | egrep -i zwei


Ich hätte
ein zwei drei vier

als Ausgabe erwartet, stattdessen erscheint aber
eins zwei drei vier | egrep -i zwei


Kann mir jemand weiterhelfen? Wie escape ich die Pipe?
0

Anzeige



#2 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.132
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 13. Mai 2008 - 16:16

Mal ganz langsam, was soll das eigentlich werden? Das riecht nach einer unnötig komplizierten Lösung...
0

#3 Mitglied ist offline   BadAss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 405
  • Beigetreten: 11. Mai 05
  • Reputation: 0

geschrieben 13. Mai 2008 - 16:24

Hi ph,

Das soll Script für mpc werden.

Ich möchte später
<script> chillout happy

eingeben können und die Tracks, die beides im Namen haben, werden geadded.

mpc search scheint leider keine Verundung zu unterstützen...
0

#4 Mitglied ist offline   BadAss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 405
  • Beigetreten: 11. Mai 05
  • Reputation: 0

geschrieben 14. Mai 2008 - 22:04

Keine Idee mehr?

Ich hab da zwar was auf Array-Basis, das ist aber viel zu langsam dafür, dass ich es mehrfach täglich nutzen wollte...
0

#5 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 15. Mai 2008 - 00:40

Zitat

do cmd=$cmd"

Wenn du die aufgelöste Variable als Befehl ausführen lassen willst, musst du es noch in Backticks setzen. Also:

Zitat

cmd=`$cmd`

0

#6 Mitglied ist offline   BadAss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 405
  • Beigetreten: 11. Mai 05
  • Reputation: 0

geschrieben 15. Mai 2008 - 18:28

Hm, also in der for-Schleife will ich ja zunächst nur den Befehl aufbauen, sprich: Für jeden übergebenen Parameter einmal " | egrep -i <Parameter>" an den Befehl anhängen

Die Ausführung erfolgt mit

$cmd

0

#7 Mitglied ist offline   deen 

  • Gruppe: aktive Mitglieder
  • Beiträge: 36
  • Beigetreten: 23. Januar 08
  • Reputation: 0

geschrieben 15. Mai 2008 - 21:00

sh -c "$cmd"

0

#8 Mitglied ist offline   BadAss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 405
  • Beigetreten: 11. Mai 05
  • Reputation: 0

geschrieben 15. Mai 2008 - 21:26

Boa SUPER! :lol:

Danke dir :lol:

Hab das mpc-Script angehängt, es bereitet bestimmt nicht nur mir Spaß ;)

Angehängte Datei(en)

  • Angehängte Datei  play.txt (170bytes)
    Anzahl der Downloads: 128

0

#9 Mitglied ist offline   deen 

  • Gruppe: aktive Mitglieder
  • Beiträge: 36
  • Beigetreten: 23. Januar 08
  • Reputation: 0

geschrieben 15. Mai 2008 - 22:05

#!/bin/sh
if [ $# -eq 0 ]; then exit 1; fi
wenn unbedingt bash
#!/usr/bin/env bash

0

#10 Mitglied ist offline   BadAss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 405
  • Beigetreten: 11. Mai 05
  • Reputation: 0

geschrieben 15. Mai 2008 - 22:51

Danke, Verbesserungen sind immer willkommen. :lol:

Hab' noch ein bisschen weitergebastelt.

Angehängte Datei(en)

  • Angehängte Datei  play.txt (352bytes)
    Anzahl der Downloads: 86

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0