Re: wie teste ich im bash skript ob * als kommandozeilen parameter uebergeben wurde?
Thorsten Haude <debian@thorstenhau.de> wrote:
> Moin,
>
> * Frank Küster wrote (2006-01-29 19:00):
>>Natürlich, aber wenn man "teststar * ENTER" eintippt, dann wird
>>"teststar" eben nicht mit * aufgerufen, sondern mit einer Liste, die die
>>die Shell generiert. Und gefragt war ursprünglich, ob man testen kann,
>>ob das Skript mit * aufgerufen wurde.
>
> Wir können noch ein wenig lutig 'rumdiskutieren, wenn ich aber ein
> Skript mit * aufrufe, dann rufe ich es mit * auf, nicht mit einer
> Liste. Borghart hatte nicht gefragt, wie man erkennt, ob das Skript
> mit "*" aufgerufen wurde.
Dir ist klar, dass man Skripte auch auf andere Weise als aus der Shell
aufrufen kann?
$ cat bin/testvar.pl
#!/usr/bin/perl
use strict;
use warnings;
my $arg="*";
system("testvar",$arg); # das testvar-Skript aus der vorletzten Mail
# ist jetzt im Pfad
$ testvar.pl
called with star
$
Hier sind die Anführungszeichen nur dazu da, um Perl zu zeigen, dass es
sich um einen String handelt, in $arg wird dann nur der Inhalt, *,
gespeichert. Das gleiche geht natürlich aus C-Programmen oder aus dem
Emacs oder aus Python-Skripten oder wasweissich.
Daher ergibt die Aussage "Das Skript wurde mit dem Argument `*'
aufgerufen" durchaus Sinn, aber sie bedeutet etwas anderes als "Das
Skript wurde von der Shell mit einer Liste aufgerufen, die die Shell
nach der Eingabe `<scriptname> *' erzeugt hat".
Gruß, Frank
--
Frank Küster
Single Molecule Spectroscopy, Protein Folding @ Inst. f. Biochemie, Univ. Zürich
Debian Developer (teTeX)
Reply to: