Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Shellprogrammierung - Übergabe eines Dateidescriptors an ein Script
Gehen Sie zu Seite Zurück  1, 2
 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 03. März 2014 16:03   Titel:

wodim hat folgendes geschrieben::
wodim hat folgendes geschrieben::
Code:
echo $@ >&2

liefert (Beispiel):
Code:
/mnt/data/Geraete/HiFiRack/pre/AmpLog/amp_log.asc

Code:
echo $1 >&2

übrigens auch.

Aber sobald ein Leerzeichen im Pfad oder Dateinamen auftaucht, wird der String da abgehackt. Bei $1, nicht bei $@.

Wer hat eine plausible Erklärung dafür?

Du willst "$1", nicht $1.

$@ ist auch falsch, denn der entfernt zunächst den Whitespace und klatscht das ganze dann wieder mit Leerzeichen zusammen. Das geht schief, sobald man Tabs oder mehrere Leerzeichen hintereinander im Parameter hat.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

wodim



Anmeldungsdatum: 01.03.2014
Beiträge: 17
Wohnort: Gilching

BeitragVerfasst am: 03. März 2014 21:03   Titel:

Janka hat folgendes geschrieben::
Fehler passieren mir doch auch dauernd und da bin ich froh, wenn mich jemand auf den Irrtum hinweist. Sonst bleibt der nämlich stehen und der nächste der es liest macht ihn nach.

Uff, dann isses ja gut. Wink

Zitat:
Ich mache jeden Tag Fehler. Wir müssen eine Kultur entwickeln, in der Fehler nicht als etwas Negatives gesehen werden, sondern als etwas, woraus alle lernen können.

(Aus einem Artikel in der "Süddeutschen", so vielleicht vor 10 Jahren, überschrieben: "Fehler im System") Etwas Mut muss man Herrn Professor schon zugestehen, mancher andere hätte da viel zuviel Angst vor der Gefahr eines "Karriereknicks", würde ich sagen.

http://www.swtr.ch/index.php/de/der-swir/organisation/der-rat?id=148:prof-dr-daniel-scheidegger&catid=39

Also schau' doch mal, was sich da jetzt als wahrscheinlichste Ursache für das ganze Problem herauskristallisiert. (Will nicht dauernd hin- und herkopieren - wozu gibt's Links? Richtig, zum Anklicken.) Wink

http://debianforum.de/forum/viewtopic.php?f=29&t=148074#p979085
_________________
Mit einem Computer kann man Probleme lösen, die man ohne ihn nicht hätte.
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 03. März 2014 22:58   Titel:

wodim hat folgendes geschrieben::
Etwas Mut muss man Herrn Professor schon zugestehen, mancher andere hätte da viel zuviel Angst vor der Gefahr eines "Karriereknicks", würde ich sagen.

http://www.swtr.ch/index.php/de/der-swir/organisation/der-rat?id=148:prof-dr-daniel-scheidegger&catid=39

War mir dunkel bekannt. Medizin ist aber auch wirklich furchtbar. Da für Mediziner der Doktorgrad praktisch obgligatorisch ist, steht es um die Qualität der abgelieferten Arbeiten nicht gut, zumal die wenigsten wirklich wissenschaftlich arbeiten wollen. Die wollen einfach kranken Menschen helfen (und 'nen dicken Wagen zum Golfplatz rollen lassen). Um die ganzen "Studien", die ständig zu den abstrustesten Gesundheitsthemen rauskommen geht's da ja noch nichtmal.

Aber ganz generell zum Thema Cargo-Kult in der Wissenschaft kontere ich mit http://dresdencodak.com/2011/04/19/dark-science-09/. Ist inzwischen also schon Popkultur geworden.

Zitat:

Also schau' doch mal, was sich da jetzt als wahrscheinlichste Ursache für das ganze Problem herauskristallisiert. (Will nicht dauernd hin- und herkopieren - wozu gibt's Links? Richtig, zum Anklicken.) Wink

http://debianforum.de/forum/viewtopic.php?f=29&t=148074#p979085

Tut mir leid, aber anhand jenes Threads sehe ich das konkrete Problem nicht. Dass es um korrektes Quoting geht hatten wir schon.

Wenn du in einem Shellskript irgendwo Einzelticks setzt, wird der String in den Einzelticks "literal" angenommen, also Variablen nicht aufgelöst. Wenn das in einem deiner Beispiele - wie oben mit gedit - nicht der Fall ist, benutzt du an der Stelle wo diese Quotes beachtet werden keine Bourne-kompatible Shell. Deshalb ist es ja auch so wichtig, die richtigen Quotes zu benutzen. Die Backslashes aus den MS-Windows-kompatiblen Dateipfaden können auch noch stören, wenn sie nicht richtig maskiert worden sind. Das ist alles ziemlich häßlich.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

wodim



Anmeldungsdatum: 01.03.2014
Beiträge: 17
Wohnort: Gilching

BeitragVerfasst am: 04. März 2014 11:41   Titel:

Janka hat folgendes geschrieben::
wodim hat folgendes geschrieben::
Etwas Mut muss man Herrn Professor schon zugestehen, mancher andere hätte da viel zuviel Angst vor der Gefahr eines "Karriereknicks", würde ich sagen.

http://www.swtr.ch/index.php/de/der-swir/organisation/der-rat?id=148:prof-dr-daniel-scheidegger&catid=39

War mir dunkel bekannt. Medizin ist aber auch wirklich furchtbar. Da für Mediziner der Doktorgrad praktisch obgligatorisch ist, steht es um die Qualität der abgelieferten Arbeiten nicht gut, zumal die wenigsten wirklich wissenschaftlich arbeiten wollen. Die wollen einfach kranken Menschen helfen (und 'nen dicken Wagen zum Golfplatz rollen lassen).

Oh, da gibt's solche und solche. Wink Ich musste manchen Arzt schlecht behandeln, um die zu finden, die mich richtig behandeln. Wink Bis auf einen: Meinen Zahnarzt. Bei dem bin ich schon ewig, der ist einfach Spitze, und der hat bis heute keinen Doktortitel. Was er aber allein mit meinen Beißerchen schon angestellt hat, ist echt reif für eine Doktorarbeit. (Wurzelbehandlung unter einer Brücke u.ä. - hat die Welt schon sowas gesehen?) Ich hab' ihn mal auf das Thema "Doktorarbeit" angesprochen: "Die ruht!"

http://www.zahnarzt-bauer.de/

Seit einem Jahr ist die Hälfte meines Gebisses "neu", und ich habe keinen Cent zugezahlt. Kaum zu glauben? Aber wahr!

Das ist ein Thema, über das es sich lohnt, zu diskutieren, und ich kann eine Menge Erfahrungen mit Ärzten und Krankenkassen weitergeben, von denen alle profitieren können. Passt aber wohl absolut nicht hierher. Wink

Janka hat folgendes geschrieben::
Wenn du in einem Shellskript irgendwo Einzelticks setzt, wird der String in den Einzelticks "literal" angenommen, also Variablen nicht aufgelöst. Wenn das in einem deiner Beispiele - wie oben mit gedit - nicht der Fall ist, benutzt du an der Stelle wo diese Quotes beachtet werden keine Bourne-kompatible Shell. Deshalb ist es ja auch so wichtig, die richtigen Quotes zu benutzen. Die Backslashes aus den MS-Windows-kompatiblen Dateipfaden können auch noch stören, wenn sie nicht richtig maskiert worden sind.

Das versuche ich zu verstehen. Schrittweise. Learning by doing. Wink

Janka hat folgendes geschrieben::
Das ist alles ziemlich häßlich.

Wieso hässlich?
_________________
Mit einem Computer kann man Probleme lösen, die man ohne ihn nicht hätte.
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 04. März 2014 12:08   Titel:

wodim hat folgendes geschrieben::
Janka hat folgendes geschrieben::
Das ist alles ziemlich häßlich.

Wieso hässlich?

Wenn du die richtige Lösung für dein konkretes Quotingproblem gefunden hast wirst du mir zustimmen.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

wodim



Anmeldungsdatum: 01.03.2014
Beiträge: 17
Wohnort: Gilching

BeitragVerfasst am: 04. März 2014 12:36   Titel:

Aaalso so heißt meine übergebene Datei (und so gibt's mir auch "echo $@ >&2" aus:
Code:
/mnt/data/Geraete/HiFiRack/pre/AmpLog/test blank.asc


Das macht mein Script draus (und so gibt's mir auch "echo $winpath >&2" aus):
Code:
D:\\Geraete\\HiFiRack\\pre\\AmpLog\\test\ blank.asc


Im Terminal funzt das:
Code:
wine 'C:\Program Files\LTC\LTspiceIV\scad3.exe' D:\\Geraete\\HiFiRack\\pre\\AmpLog\\test\ blank.asc

-> LTSpice startet und öffnet die Datei.

Aus dem Script nicht:
Code:
wine 'C:\Program Files\LTC\LTspiceIV\scad3.exe' $winpath

Da sagt mir LTSpice:
Zitat:
D:\\Geraete\\HiFiRack\\pre\\AmpLog\\test\ was not found


Also nächster Versuch:
Code:
wine 'C:\Program Files\LTC\LTspiceIV\scad3.exe' '$winpath'

Message von LTSpice:
Zitat:
$winpath was not found

_________________
Mit einem Computer kann man Probleme lösen, die man ohne ihn nicht hätte.


Zuletzt bearbeitet von wodim am 04. März 2014 21:00, insgesamt 2-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden

wodim



Anmeldungsdatum: 01.03.2014
Beiträge: 17
Wohnort: Gilching

BeitragVerfasst am: 04. März 2014 13:10   Titel:

Code:
winpath=${@//'/mnt/data'/'D:'}                # /mnt/data ist Wine - Laufwerk D
winpath=${winpath//'/'/'\\'}                  # Slashs durch doppelte Backslash ersetzen
winpath=${winpath//' '/'\ '}                  # Blanks mit Backslashs maskieren
wine 'C:\Program Files\LTC\LTspiceIV\scad3.exe' "$winpath"

Message von LTSpice:
Zitat:
D::\Geraete\HiFiRack\pre\AmpLog\test\ blank.asc contains an invalid path.


Also was war der Fehler? Blanks mit Backslash zu "maskieren". Wenn ich den Befehl weglasse, geht's! Aber nur bei Wine. Wink

Code:
file=${@//' '/'\ '} # Blanks mit Backslashs maskieren
gedit "$file"

Das funzt. Gab's irgendwelche Probleme? Wink Also was heißt hier "hässlich"? Wink
_________________
Mit einem Computer kann man Probleme lösen, die man ohne ihn nicht hätte.


Zuletzt bearbeitet von wodim am 04. März 2014 21:29, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden

wodim



Anmeldungsdatum: 01.03.2014
Beiträge: 17
Wohnort: Gilching

BeitragVerfasst am: 04. März 2014 21:18   Titel:

Janka hat folgendes geschrieben::
wodim hat folgendes geschrieben::
Janka hat folgendes geschrieben::
Das ist alles ziemlich häßlich.

Wieso hässlich?

Wenn du die richtige Lösung für dein konkretes Quotingproblem gefunden hast wirst du mir zustimmen.

Janka

Nö. Weißt du, das ist wie mit (u.a.) eben diesem Gerät (auf das meine Pfad- und Dateinamen ja schon hindeuten). Wink

http://www.elektor.de/forum/foren-ubersicht/elektor-foren-der-treffpunkt-fur-elektroniker/bauteile-gerate-datenblatter-suche-047-biete/suche-a277d.2622214.lynkx?highlight=wodim&pageStart=11

Das kann man nicht beschreiben, das muss man erlebt haben: Alles "Hässliche" (Mühe, Ärger, ... ) ist vergessen in dem Moment, wo dich so ein Drahtverhau zum ersten Mal mit einer klaren Stimme anspricht.

Seit ein paar Wochen halt u.a. auch eine super Übung, um mich nach der bewährten Methode "learning by doing" in LTSpice 'reinzufummeln. Das ich für mein "richtiges" Projekt auch brauche (gegen das wiederum diese Bastelei immer noch kalter Kaffee ist). Bitte mal informieren!

http://www.politik-sind-wir.de/showthread.php/36473-Das-Ende-der-Europ%C3%A4ischen-Union?p=106357&viewfull=1#post106357
_________________
Mit einem Computer kann man Probleme lösen, die man ohne ihn nicht hätte.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Gehen Sie zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy