Merkwuerdiges Ausfuehrungsverhalten

Gast #5758947
Lesenswert?

Mir ist das bei einer anderen Gelegenheit schon mal aufgefallen und als 
es wieder passiert ist, dachte ich mir, fragste mal nach.

Nachstehender Code steht in einer .py Datei und läuft mit Python3. Wenn 
ich die Datei, die ausführbar ist, öffne und sage, lass mal mit Terminal 
ausführen, passiert etwas unerwartes. Bei Euch auch?? Ich denke ich weiß 
wodurch es ausgelöst wird, aber doch nicht mit solchen Konsequenzen.
1
#!/bin/bash
2

3
import re
4

5
some_file = ''
6
search_string = b''
7
sub_string = b''
8
counter = 1
9

10
fh = open(some_file,'r+b')                                                
11
content = fh.read()                                      
12
pattern = re.compile(search_string)                                        
13
matches = pattern.finditer(content)                                         
14
      
15
for match in matches:                                                      
16
  match_range = match.end() - match.start()                                
17
  print('{}: {} - {} -> {} -> {}' .format(counter, match.start(), match.end(), match_range, match))
18
  fh.seek(match.start())
19
  for m in range(match_range):                                             
20
    fh.write(sub_string)
21
  counter = counter + 1
22

23
fh.close()
Gast #5758955
Lesenswert?

Habe ich ja geschrieben, dass ich weiß wo das Problem seinen Ursprung 
hat, aber hast Du das mal im Terminal ausgeführt?


Davon rede ich. Da passiert nämlich etwas völlig irres und das kann ich 
mir mit dieser shebang Zeile nicht erklären.

Habe den wikpedia Artikel gerade überflogen und davon steht da nichts 
soweit ich das sehe.
Gast #5758957
Lesenswert?

> hast Du das mal im Terminal ausgeführt?

Bin doch nicht bescheuert ;-)  Bash lässt vieles durchgehen ohne 
abzubrechen und dabei wird gerne Unheil angerichtet.  Ich denke mal, du 
spielst das "import" an - würde bei mir ImageMagicks "import" starten.
Gast #5758961
Lesenswert?

> habe ich kurz danach eine pdf mit einem aktuell screenshot im
> betreffenden verzeichnis.

Jo, du scheinst auch ImageMagick installiert zu haben. "import" ist das 
Screenshotprogramm von dem.  Was hast du denn erwartet?  Sei froh, dass 
in dem Script kein "rm *" oder ähnliches vorkommt.


PS: Ich hoffe, du hattest keine Datei Namens "re" in dem Verzeichnis, 
die hat der "import" nämlich überschrieben.
Gast #5758962
Lesenswert?

> das ist ja super gefährlich und funktioniert einfach so auf einem
> modernen linux-system??

Ehm ... was sollte das System denn sonst machen?  Du sagst "Bitte 
ausführen" und da die Datei das x-Bit (executable) gesetzt hat, macht es 
das auch.  Dass das Programm fehlerhaft ist (falscher Interpreter 
eingetragen), kann das System doch nicht wissen.
Gast #5758965
Lesenswert?

#!/usr/bin/python3

darüber brauchen wir nicht reden, klar war der interpreter falsch 
../bash hat in einem python skript nichts zu suchen.

ich habe das skript die ganze zeit über in der shell mit dem direkten 
programmaufruf gestartet und dabei fiel es mir nicht auf, weil ich mit 
dem internen rumgeschwurbel im code beschäftigt war.

das ich besagtes 'import' als programm habe, wusste ich gar nicht, 
geschweige denn um dessen wirkung.

als ich dann den screenshot auf dem desktop fand -im pdf-format-, 
versetzte mich das erstmal in alarmstufe pink. das mir der shebang-Zeile 
war mir auch unmittelbar nach dem ersten Schock klar, nur kannte ich die 
ImageMagic-Erweiterung import halt vorher nicht.
Gast #5758966
Lesenswert?

Matthias S. schrieb:

> als ich dann den screenshot auf dem desktop fand -im pdf-format-,
> versetzte mich das erstmal in alarmstufe pink. das mir der shebang-Zeile
> war mir auch unmittelbar nach dem ersten Schock klar, nur kannte ich die
> ImageMagic-Erweiterung import halt vorher nicht.

$ which import

hätte dir die Erleuchtung geben können. Das klappt übrigens mit jedem 
existierenden externen Kommando im Pfad deines Systems...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren