Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8925[/thread]

: bad interpreter



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
vayu
 2007-04-18 14:09
#76005 #76005
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hi,

ich blicks grad nicht ...

ich hab das skript mit chmod 755 script.pl, ausführbar gemacht und möchte es ohne das "perl" vornweg aufrufen unter Linux

der Pfad zum Perl in der shebang stimmt 100%

und ich krieg die Fehlermeldung

: bad interpreter: Datei oder Verzeichnis nicht gefunden

das komische ist, dass vor dem ersten ":" gar nichts steht. da sollte doch dann wenigstens pl oder sowas kommen?

und noch komischer ist, dass ein anderes skript von mir einwandfrei so läuft, gleiche shebang, gleiche Modul includes. nur dieses skript funktioniert so nicht.

Woran liegt es?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use Getopt::Std;

my %opts = ();
getopts('d:rh', \%opts);
print usage() if(!defined $opts{'d'} or $opts{'h'});
my @du = qx(du -h --max-depth=1 $opts{'d'});
my %d = ();

foreach(@du) {
chomp;
if(/(\d+)K(.*)$/) { $_ = ($1 *1024)." ".$2; }
if(/(\d+)M(.*)$/) { $_ = ($1 *1024*1024)." ".$2; }
if(/(\d+)G(.*)$/) { $_ = ($1*1024*1024*1024)." ".$2; }
if(/(\d+) (.*)$/) { push @{$d{$1}}, $2; }
}
@du = ();
foreach (sort {$a <=> $b} keys %d) {
my $key = $_;

if ($_ > 1073741824) { $key = ($key / 1073741824)."G"; }
elsif($_ > 1048576) { $key = ($key / 1048576) ."M"; }
elsif($_ > 1024) { $key = ($key / 1024) ."K"; }
foreach my $ele (@{$d{$_}}) {
push @du, $key."\t".$ele;
}
}

if($opts{'r'}) {
print $_."\n" foreach(reverse @du);
} else {
print $_."\n" foreach(@du);
}

sub usage {
print<<EOF;
du.pl -d <directory> [-r]

Arguments:

mandatory:
-d directory name

optional:
-r if the sort order should be descending
EOF

exit 0;
}
Ronnie
 2007-04-18 14:11
#76006 #76006
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Schau mal ob da ein DOS-Zeilenende in dem Skript ist - das lässt möglicherweise die bash austicken.
vayu
 2007-04-18 14:18
#76007 #76007
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ist nicht, sollte im vi ja durch ^M angezeigt werden oder?

hab ausserdem auch nochmal im vi direkt ne leerzeile angefügt, hat auch nichts gebracht
Ronnie
 2007-04-18 14:32
#76008 #76008
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
sehr strange. Füge doch mal 'ne neue Zeile am Anfang der Datei ein und probier es mal mit: #!/usr/bin/env perl
vayu
 2007-04-18 14:40
#76009 #76009
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
da gibts dann folgendes

": Datei oder Verzeichnis nicht gefunden"

in der shell funktioneirt env perl wiederum ...\n\n

<!--EDIT|vayu|1176893141-->
renee
 2007-04-18 14:53
#76010 #76010
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie rufst Du es genau auf? Hast Du es Dir schonmal im Hex-Editor angeschaut?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
vayu
 2007-04-18 14:53
#76011 #76011
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ok jetzt läufts ... da war irgendwo, keine ahnung wo ... wohl doch DOS Zeichen drin. Hab die mal mit dem UltraEdit geöffnet auf Konvertieren DOS->Unix geklickt und es funzt ... aber im vi wurden bei mir keine fremden Zeichen angezeigt ... was kann das gewesen sein?
Linuxer
 2007-04-18 15:39
#76012 #76012
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

wenn die Datei sauber im DOS-Format vorliegt, dann zeigt vim keine ^M an; allenfalls in der Statusleiste taucht eventuell ein [dos] auf.
^M werden eigentlich nur angezeigt, wenn es einen Misch-Masch der verschiedenen Zeilenumbrüche gibt.

Im vim kann das Dateiformat mit dem Kommando ":set ff=unix" auf Unix-Format gestellt werden; anschliessend Datei speichern, fertig.

edit:
Das aktuelle Dateiformat lässt sich mit dem Kommando ":set ff" nachschauen.\n\n

<!--EDIT|Linuxer|1176896480-->
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!
vayu
 2007-04-18 15:54
#76013 #76013
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
oh prima Linuxer, dank dir

ich dachte immer, dass vi IMMER bei DOS Dateien ein ^M anzeigt
betterworld
 2007-04-18 16:24
#76014 #76014
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=vayu,18.04.2007, 13:54]oh prima Linuxer, dank dir

ich dachte immer, dass vi IMMER bei DOS Dateien ein ^M anzeigt[/quote]
vim konvertiert das inzwischen automatisch zur Anzeige.\n\n

<!--EDIT|betterworld|1176899093-->
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-04-18 14:09.