Forum: PC-Programmierung Merkwuerdiges Ausfuehrungsverhalten


von Matthias S. (Gast)


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()

von foobar (Gast)


Lesenswert?

> 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.
1
#!/bin/bash
2
...

https://en.wikipedia.org/wiki/Shebang_(Unix)

von Matthias S. (Gast)


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.

von foobar (Gast)


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.

von Matthias S. (Gast)


Lesenswert?

wenn ich die ausführbare datei öffne und 'im terminal ausführen' wähle, 
habe ich kurz danach eine pdf mit einem aktuell screenshot im 
betreffenden verzeichnis.

what?!

von Matthias S. (Gast)


Lesenswert?

tatsache... sehe das gerade auch.

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

was man selbst oder dritte damit anrichten könnte, WTF

von foobar (Gast)


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.

von foobar (Gast)


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.

von Matthias S. (Gast)


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.

von c-hater (Gast)


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...

von Matthias S. (Gast)


Lesenswert?

man import hat bei mir schließlich für erleuchtung gesorgt.

aber wer nennt ein programm für screenshots import?

gleich erstmal man #include... überprüfen... oder which #...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.