mikrocontroller.net

Forum: PC-Programmierung Merkwuerdiges Ausfuehrungsverhalten


Autor: Matthias S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
#!/bin/bash

import re

some_file = ''
search_string = b''
sub_string = b''
counter = 1

fh = open(some_file,'r+b')                                                
content = fh.read()                                      
pattern = re.compile(search_string)                                        
matches = pattern.finditer(content)                                         
      
for match in matches:                                                      
  match_range = match.end() - match.start()                                
  print('{}: {} - {} -> {} -> {}' .format(counter, match.start(), match.end(), match_range, match))
  fh.seek(match.start())
  for m in range(match_range):                                             
    fh.write(sub_string)
  counter = counter + 1

fh.close()

Autor: foobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
#!/bin/bash
...

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

Autor: Matthias S. (Gast)
Datum:

Bewertung
-2 lesenswert
nicht 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.

Autor: foobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!

Autor: Matthias S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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

Autor: foobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: foobar (Gast)
Datum:

Bewertung
2 lesenswert
nicht 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.

Autor: Matthias S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Matthias S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 #...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.