Schrift
[thread]12492[/thread]

commandline parameter ohne @ARGV-veränderung

Leser: 2


<< >> 6 Einträge, 1 Seite
jan
 2008-09-14 18:12
#114638 #114638
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
Moin,

ich bin gerade an einem script wo ich übergebene parameter an andere programme weiterreichen muss. in @ARGV sind sie ja nun schon vorbereitet, zB sind die eventuellen anführungsstriche weg, die einen parameter umschließen können. das problem ist, nun weiß ich natürlich nicht mehr, ob um den parameter anführungsstriche gehören. natürlich kann ich gucken, ob er ein leerzeichen enthält, aber das ist unschön. lieber wäre mir ein zugriff auf die zeile, die dieses script aufrief ....
also noch mal, ganz kurz:
dir "/?"
ist ja was anderes als
dir /?

wenn mein script nun aufgerufen wird in der form
test.pl /?
wie kriege ich heraus, ob ich "/?" weitergeben muss oder /?

vielleicht fehlen mir auch nur die richtigen keywords zum suchen, ich lande halt immer auf seiten, wo erklärt wird, wie man auf @ARGV zugreift :(
Gast Gast
 2008-09-14 18:43
#114639 #114639
sowas?
Code (perl): (dl )
system('programm', @ARGV);
jan
 2008-09-14 18:45
#114640 #114640
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, generell schon -- nur ist damit ja auch nicht klar, ob das zu
programm /?
oder
programm "/?"

werden sollte...
Linuxer
 2008-09-14 18:57
#114642 #114642
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Die "" sind für die Shell, das Programm sieht sie gar nicht.

Wenn Du "" benutzt, um beispielsweise Leerzeichen zu maskieren, dann bemerkt das die Shell und gibt den enthaltenen String als ein Argument an das Programm weiter.
Das Programm selber erfährt gar nicht, ob da Leerzeichen verwendet wurden oder nicht.

Code: (dl )
1
2
programm "/?"
programm /\?


Das sind zwei gleichwertige Aufrufe, die beide das Argument /? an das Programm übergeben.
Beide Male weiss das Programm nicht, ob mit "" oder mit \ maskiert wurde.

Worin begründet sich Deine Sorge konkret, ob Du nun "" einsetzt oder nicht?
Vielleicht suchst Du etwas wie quotemeta()?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
jan
 2008-09-14 19:08
#114643 #114643
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ah, mh, du hast recht -- allerdings gilt das scheinbar nur für linux. ich hab hier lokal auf meiner xp-kiste getestet und
Code: (dl )
dir "/?"
ist eben nicht gleichbedeutend mit
Code: (dl )
dir /?
... das eine versucht "/?" zu listen, das andere gibt die hilfe aus ...

aber im grunde ist das für mich egal, weil's am ende eh auf einem linux-system laufen soll. danke.
Gast Gast
 2008-09-14 23:10
#114650 #114650
Wenn du z.B. "system" nur mit einem Parameter aufrufst wird der Inhalt durch die Shell geparst, bei einem Mehrparameter-Aufruf ist das nicht der Fall. Ähnliches bei "exec"? Die backticks `` rufen immer eine Shell auf
<< >> 6 Einträge, 1 Seite



View all threads created 2008-09-14 18:12.