ubuntuusers.de

Ubuntu liest vor!

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

scheint jetzt so weit zu funktionieren. Mir ist jetzt noch aufgefallen das in dem Teil # check if a recording is wanted after listening wenn man als mp3 speichern will, die Abfrage in Zeile 223

if [ "$MP3" == "2" ] || [ "$END2" == "Ja" ]; then

nur funktioniert wenn man mit Ja antwortet. Mit einem ja funktioniert es logischerweise nicht. Wäre sicher nicht schlecht wenn beide Varianten funktionieren würden. Ich hatte mivh nämlich schon gewundert warum es bei meinen ersten zwei Versuchen nicht geklappt hat 😳

Gruß...busfahrer

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Schön, dass es jetzt geht ☺

Mit dem Ja/ja hast du grundsätzlich Recht - "einfache" Lösung ist, in der --entry-text-Angabe "Ja" einzutragen, dann klickt man es weg (Abbruch) wenn nein gewünscht ist... Du könntest es auch mit einem ein [ "$END2" != nein ] versuchen. Aber das könnte man sicher auch noch mit Groß- und Kleinschreibung hinbekommen, schau ich gleich mal, wie das wohl ginge.

so long
hank

EDIT Mit der Zeile

    { if [ "$MP3" == "2" ] || [ "$(echo $END2 | tr [:upper:] [:lower:])" == "ja" ]; then 

sollte es völlig egal sein, ob du da JA, ja, Ja, oder jA eingibst, müsste immer klappen.

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Artikel ist jetzt "offiziell": xsane2speech, die Änderung für die Eingabe (letzter post) hab' ich mit eingebaut.

Eine integrierte Rechtschreibprüfung wäre ja auch nicht schlecht; ob man hunspell dafür irgendwie GUI-mäßig integrieren könnte? Aber vielleicht ist das auch zu "aufwändig"...

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Rechtschreibprüfung optional, mit diesen Zeilen einbaubar:

    SPELLCHECK=`zenity --entry --title="Rechtschreibkorrektur" --entry-text="Ja" --text="Sollen der Text auf Rechtschreibfehler überprüft werden?"`
    { if [[ $SPELLCHECK == "Ja" ]]; then
        gnome-terminal -x hunspell -t "$FILE_OUT"
        echo "Hunspell used for spellchecking" 1>&2 
    fi }

Ruft dann Hunspell auf.

Für Tesseract deu-f kann man noch dieses einbauen:

 
        else 
        # tesseract is default, start OCR (tesseract expands output with *.txt)
          { if [[ "$LANGUAGE" == "deu-f" ]]; then
           sed -i -r -e 's/([J])([bcdfghjklmnpqrstvwxyzß])/\I\2/g' "$TXT_FILE".txt
          fi } 
            `tesseract "$TIF_FILE" "$TXT_FILE" -l "$LANGUAGE"` 1>&2
        fi }

sorgt dafür, dass Wörter mit großem I richtig erkannt werden (I und J sind bei Fraktur-Schriften häufig gleich).

so long
hank

Extraordinary

Anmeldungsdatum:
29. Juni 2011

Beiträge: 156

hallo,

Ich bin gerade dabei das Skript xsane2speech.sh, so wie es auf der entsprechenden Wiki-Seite ist, mit xsane auszuprobieren. Ich habe ubuntu 11.04 mit Gnome. Bei mir funktioniert das noch gar nicht so recht.

In Xsane habe ich in der Konfiguration folgendes eingetragen: Pfad/xsane2speech.sh -l deu -x "-vmb-de6 -s165 -g2" Für die Eingabeoption steht -i und für die Ausgabeoption -o Zum Scannen ist das Tiff-Format ausgewählt, Das problem tritt aber auch auf, wenn statt Tiff, Text im Scanmenü ausgewählt wurde. Nach dem Starten der OCR-Texterkennung wähle ich ~/Dokumente/scanout.txt

Dann läuft das Skript durch: keine weiteren Scans, direkte Sprachausgabe, kein mp3, Aufbewahrung des Dokuments- Ja.

Eine Sprachausgabe ist nicht zu hören.

Das Logfile gibt folgende Informationen:

convert: no decode delegate for this image format /tmp/magick-XXK4JhAo' @ error/constitute.c/ReadImage/532. convert: missing an image filename /home/extrao/temp/OCRResult.tif' @ error/convert.c/ConvertImageCommand/2970. Tesseract Open Source OCR Engine und weitere Folgefehler

In manchen Fällen, die ich noch nicht kenne, funktioniert das mit dem Konvertieren. Dann gibt es aber folgende Fehler:

Tesseract Open Source OCR Engine tesseract -l deu used /home/extrao/skripte/select.sh started eSpeak with options used for utterance Failed to read file '/home/extrao/Dokumente/scanout.txt' text saved as /home/extrao/Dokumente/scanout.txt

Es wird aber keine Datei namens scanout.txt gespeichert.

dann folgen noch eine Reihe von alsa lib Fehlermeldungen.

Wenn ich in Xsane in der OCR-Konfiguration als Optionen nur -l deu angebe und Ich eine künstliche Textdatei im Dokumentenverzeichnis scanout.txt anlege und das mit dem Konvertieren funktioniert, dann wird der Text aus der künstlichen scanout.txt Datei vorgelesen, aber mit amerikanischen Akzent. Das Logfile gibt auch bei Tonausgabe viele Alsa Meldungen und einige Fehler an.

Weiß jemand, welche Zeilen ich im Skript verändern muß, damit es reibungslos funktioniert?

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Kannst du noch mal ganz exakt posten (am besten per copy'n'paste hier reinstellen, und als Codebox formatieren), was genau in der Konfiguration steht? Probleme treten immer dann auf, wenn es zu viele Leerzeichen in dem Eintrag gibt.

Pfad/xsane2speech.sh -l deu -x "-vmb-de6 -s165 -g2"

Die Sprache, die hier eingestellt ist, benötigt mbrola-de6; ist das installiert?

so long
hank

EDIT: Es gibt Probleme mit der Einstellung TEXT, wenn mehrere Scans produziert werden sollen; da musst du ggf. doch über "Betrachter" gehen.

Extraordinary

Anmeldungsdatum:
29. Juni 2011

Beiträge: 156

Es lag an zwei, drei Leerzeichen hinter dem Eintrag für den Pfad für die OCR Texterkennung. Nach dem entfernen der Leerzeichen hat es funktioniert. Auch die Tonausgabe. dennoch gibt das LOG-File folgende Meldungen aus:

select.sh started
eSpeak with options -vmb-de6 -s165 -g2 used for utterance
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Cannot connect to server socket err = No such file or directory
Cannot connect to server socket
jack server is not running or cannot be started
mbrola: Warning: R-o unkown, replaced with _-_
mbrola: Warning: R-o unkown, replaced with _-_
mbrola: Warning: R-o unkown, replaced with _-_
mbrola: Warning: R-o unkown, replaced with _-_
utterance canceled

Extraordinary

Anmeldungsdatum:
29. Juni 2011

Beiträge: 156

Als Anregungen habe ich folgendes: Bei dem letzten Eingabefenster ist nicht klar, daß die Speicherung der Textdatei das "Ja" voreingestellt ist. Die Anzeigedauer ist auch zu kurz gewählt. Man kann nicht so schnell mit der Tab-Taste die Funktion auswählen. Bei den anderen Eingabefenstern ist, wenn man sie nicht sieht unklar, daß hier Text eingegeben werden muß. - Möglicherweise auch nur als Kleinbuchstaben.

den Dialog für die Tonausgabe würde ich über die Tastatur verwalten. z.B. das Drücken Leer-Taste für Pause und Abspielen. und das "s" für Stop.

Über ein fenster würde ich dem Anwender mitteilen, daß er nun mit der Leertaste die Tonausgabe starten kann, daß er über die Leertaste auch die Tonausgabe anhalten kann und über die s-Taste die Tonausgabe stoppen kann.

Die eingabedialogfelder würde ich alle in einer Dialogbox zusammenfassen. Die Auswahl über sogenannte check-Boxen verwalten, so wie es in den Einstellungen von Orca gemacht wird. Hier wird wenn man, mit der Tab-Taste auf den Eintrag geht dieser gleich vorgelesen und mit der Leer-Taste kann man den Eintrag festlegen.

Über Auswahldialoge (Pullddown) könnte man das Texterkennungsverfahren, die Sprachausgabe und die Stimmen auswählen. Damit umgeht man Fehler bei der Übergabe von Xsane an das Skript.

Hier könnte dann auch das temp-Verzeichnis eingetragen werden.

Diese Einstellungen könnten dann in einer Datei gespeichert werden, daß sie nicht immer wieder erneut eingegeben werden müssen.

Der Anwender sollte auch die Mitteilungbekommen, wenn der OCR Prozeß läuft oder bei großen Dateien die mp3-Erstellung läuft. Dieser Text sollte so sein, daß er auch über z.B. Orca ausgegeben wird. Es wäre zusätzlich auch sinnvoll, dem Anwender mitzuteilen, wenn der Prozeß beendet ist und er sich wieder im Betrachter von Xsane befindet.

Bei dem Start des Skriptes sollte das Logfile gelöscht werden, Denn im Moment werden alle Skriptausführungen In Logfile abgelegt, was dazu führt, daß die Datei irgendwann sehr groß wird und viel Datenmüll speichert.

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

@ Extraordinary Danke für die Hinweise und Verbesserungsvorschläge!

Einige Dinge habe ich mit yad statt Zenity schon hinbekommen, werde das dann demnächst mal veröffentlichen (da gibt es dann eindeutige Buttons für die Eingabe, und keine Texteingaben mehr - Allerdings sollte auch jetzt schon egal sein, ob man JA, ja Ja oder jA schreibt...

Das mit den Tasten zum Steuern müsste ich noch mal checken, ob (und wie) das mit yad funktioniert; bin aber kein "Profi", das läuft bei mir alles recht langwierig über Try-and-error 😉.

Ein wünschenswerter Weg für die Optionen über ein Eingabedialogfenster lässt sich wohl nur schwer regeln, weil die Dinge in die Konfigurationsangaben von XSane müssen - auch dafür reichen meine Kenntnisse momentan nicht aus; und Versuche, in Kontakt mit dem xsane-Entwickler zu treten, sind in der Vergangenheit wiederholt fehl geschlagen, er hat auf Anfragen schlicht nicht reagiert. Vielleicht ließe sich etwas über die xsane-Konfigurationedatei regeln; da müsste ich mal genauer forschen, wie man dort am besten rankommt. Aber die Idee ist natürlich gut, wenn du da weitere Ideen hast, wie sich das realisieren ließe, wäre ich dankbar; auch eine config-Datei wäre natürlich nicht verkehrt.

Den Verarbeitungsprozess über eine Fortschrittsanzeige anzuzeigen, sollte sowohl mit Yad, als auch mit Zenity relativ einfach gehen; ich hatte auch schon mit KDialog experimentiert, weil das Skript momentan ja eher GNOME-lastig ist. Die Ausgabefähigkeit über Orca ist sicher sinnvoll, dürfte mit einfachen Info-Boxen, die aufpoppen, wenn die Bearbeitung fertig ist, auch kein Problem sein.

Das mit dem Log hat so seine zwei Seiten; es wird ja gelöscht, wenn der Computer ausgestellt wird; insofern hält sich der Datenmüll in Grenzen; ich hatte das zum Testen aber extra so gelassen, dass zunächst nichts gelöscht wird, weil es in der Testphase vergleichsweise viele "crashes" gab 😉

Zu deinen Fehlermeldungen konkret: Die alsa-Fehler kann ich nicht nachvollziehen; ist bei mir noch nicht vorgekommen. Welche Alsa-Version, auf was für einer Ubuntu-Version läuft bei dir? Warum der Jack-server verwendet werden soll, ist mir auch nicht klar, könnte vielleicht an einer speziellen Konfiguration deines Soundsystems liegen; dazu weiß ich aber nicht genug...

Hast du solche Fehler auch, wenn du eSpeak oder Gespeaker aus dem Terminal heraus verwendest?

mbrola: Warning: R-o unkown, replaced with _-_

Die Mbrola-Meldungen beziehen sich auf Fehler in der Diphon-Repräsentation der Lautkombinationen in der mbrola-"Sprachproduktion"; bestimmte Kombinationen lassen sich nicht "aussprechen" bzw. sind dort nicht vorgesehen, daher werden sie schlicht ausgelassen. Ist ein bekanntes mbrola-Problem, kann leider weder in espeak noch in xsane2speech abgestellt werden. Hinweise dazu findest du in Festival/Kompilieren (Abschnitt „Fehlbetonungen-und-ausgelassene-Diphone“)...

bt_audio_service_open: connect() failed: Connection refused (111)

Könnte an einem bluetooth-Paket liegen, das installiert ist, aber gar nicht benötigt wird, hatte soetwas in anderem Zusammenhang schon mal; müsste noch mal suchen...

so long
hank

Extraordinary

Anmeldungsdatum:
29. Juni 2011

Beiträge: 156

Die selbe lange Fehlermeldung bekomme ich auch, wenn ich espeak über das Terminal aufrufe. Ich habe ubuntu 11.04 mit alsa und Pulseaudio in der entsprechenden Version. Jack wollte ich mal ausprobieren, habe es aber wieder deinstalliert. Weil aber Ubuntu die Programme nicht restlos entfernt, bleiben immer irgendwie Spuren, vielleicht liegt es daran. Beim efehl aplay gibt es keine Meldungen. Es ist auch unabhängig von der gewählten Soundkarte. Ich habe mal espeak entfernt und wieder instaliert aber das hat auch nichts verändert. Im übrigen mögen sich bei mir Espeak und Orca überhaupt nicht.

Aber jetzt nocheinmal zu Xsan2Speech Ich hatte das mit der Dialogbox einfacher gemeint. Nicht, daß man es über das Xsane einstellungsmenü macht. Ich dachte es so, daß sie immer aufgerufen wird, sobald das xsane2speech-Skript aufgerufen wird.

Als Programmoberfläche habe ich noch eine neue Idee: Die Programmoberfläche würde dann in etwa so aussehen: ein Eingabefeld für die Anzahl der einzuscannenden Dokumente Ein Knopf fürDokumente einscannen Ein Knopf für Text anhören Ein Knopf für mp3 speichern Ein Knopf für Text in Textdatei speichern ein Knopf für Einstellungen Ein Knopf für "zurück zum Betrachter von Xsane" In den einstellungen wird dann der Pfad für das temporäre Verzeichnis gewählt Und dort werden auch das Texterkennungsverfahren gewählt und das Spachsystem und die entsprechenden Stimmen Diese einstellungen werden automatisch in einer Xsane2speech.conf gespeichert

Dieses hat den Vorteil, daß man sich mehrmals den Text anhören kann, auch unter Umständen mit anderen Stimmen, und wenn es gefällt, kann der Anwender immer noch wählen, ob er es als mp3 haben will oder auch als Textdokument speichern möchte.

Dann sollte man auch noch schauen, daß man hörbar gemachte Meldungen (z.B. über orca hat: z.B. "Willkommen bei Xsane to speech" und wenn die Texterkennung startet und wenn sie abgeschlossen ist. So ungefähr.

Du schreibst, daß es so mühselig ist über try and error die Skripte zu programmieren. Gibt es da keine Werkzeuge, mit denen man ein Skript Schritt für Schritt ausführen kann und zwischendurch die Inhalte von Variablen abfragen kann?

Einen Vorschlag habe ich noch für das Xsane - Wiki: Es hat eine ganze Weille gebraucht, bis ich rausbekommen habe, wie ich über die Tastatur die Pulldown-Menüauswahleinträge öffnen kann (Betrachter, Speichern, Fotokopie, ... als auch Tiff, pdf, Text). Es geht mit der Leertaste. Meißt übllich ist die Tastenkombination Alt+Cursor-Down. Für Leute, die viel oder gerne über die Tastatur arbeiten, könnte das vielleicht hilfreich sein.

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Ich bin gerade dabei, eine Art "xsane2speech-Konfigurations-Editor" zusammenzustückeln, der die Eingabe-Zeile für die xsane2speech-Konfiguration in XSane zusammenbastelt, und dann direkt in die Datei ~/sane/xsane/xsane.rc einbaut; das macht es weniger fehleranfällig, wenn es denn dereinst funktionieren sollte 😉. Dafür brauche ich noch einen sed-Befehl oder soetwas, der die Eingaben dann gesammelt an die richtige Stelle in der Datei verschiebt, die danach dann von xsane verwendet werden kann. Ggf. ließe sich so auch eine Art "Konfigurations-Datei" (oder auch mehrere) für xsane2speech realisieren, in der die gewählten Angaben optional auch abgespeichert, und dann schnell wieder in die xsane-OCR-Konfigurationszeile geschrieben werden könnten.

Momentan gibt es in dem Sinne keinen xsane2speech-Aufruf, da das ja als OCR-Befehl aus xsane heraus läuft; eine Möglichkeit wäre es, das Skript so zu schreiben, dass beim Aufruf entweder xsane direkt startet (wenn und weil die xsane2speech-Befehlszeile so korrekt ist) - oder wenn es geändert werden soll, eben genannte Konfigurationsabfragen macht, oder eine bstehende config-DAtei ausliest, und danach XSane startet.

De Idee mit der Programmoberfläche finde ich schlüssig, leider "kann" ich das nicht; ich verstehe schlicht zu wenig vom Programmieren, um da eine entsprechende Oberfläche zu basteln 😢. Insofern muss ich erstmal bei den Dialog-Programmen bleiben. Aber auch eine komplexere Shell-Programmierung mit yad oder zenity ist für mich nicht so ganz einfach.

Ein Problem besteht auch darin, dass die Konfiguration bei laufendem XSane über die xsane.rc nicht zu verändern ist. Die Veränderungen müssen anscheinend entweder vorher erfolgen; oder über die Eingabedialoge von Xsane mit dem "OK"- oder "Übernehmen"-Knopf abgeschlossen werden müssen, damit sie wirksam werden.

Verschiedene Stimmen zu testen sollte theoretisch möglich sein, da ja zunächst nur der Text gespeichert wird. Allerdings müsste man dazu wohl die Befehlsabfolge in xsane2speech ändern, und noch ein paar Zwischenschritte und weiter "Verzweigungen" bei der Abfrage einbauen. Problem da wird eher sein, abzutesten, welche Stimmen/Sprachen denn installiert sind; eSpeak kann ja auch mbrola-Sprachen/Stimmen verwenden, für Festival sind auch mehrere Paket zu installieren, wenn man verschiedene Sprachen/Stimmen möchte (und für Festival auf Deutsch ist auch "etwas mehr" Vorarbeit nötig...)

Du schreibst, daß es so mühselig ist über try and error die Skripte zu programmieren. Gibt es da keine Werkzeuge, mit denen man ein Skript Schritt für Schritt ausführen kann und zwischendurch die Inhalte von Variablen abfragen kann?

Klar, so mache ich das auch; ist aber eben "Schritt für Schritt" und "mühselig nährt sich das Eichhörnchen", kann also etwas dauern 😉

Mit orca hatte ich sowie so etliche Probleme, als ich das für den Artikel genauer angeschaut habe; ich bin zum Glück nicht darauf angewiesen...

Den XSane-Hinweis mit der Auswahl können wir noch in den Artikel mit aufnehmen; theoretisch sollte das bei etlichen GTK-Anwendungen so sein, dass über die + + + , ggf noch Strg dazu, navigiert, und mit der Leertaste ausgewählt wird; geht ja auch bei den Schaltknöpfen. Ich weiß aber auch nicht, ob das irgendwo im Wiki "allgemein" vermerkt ist.

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Hab jetzt mal ein "Konfigurationsskript" zusammengebastelt, mit dem man entweder xsane direkt startet, oder eine neue xsane2speech-Konfiguration erstellt, und dann XSane startet mit der neu angelegten Konfiguration startet, oder eine bereits bestehende Konfigurationsdatei verwenden kann (besten Dank an die fleißigen Supporter aus dem Shell-und-Programmieren-Forum, die mir (wie schon gute Tradition 😀 ) beim benötigten sed-Befehl geholfen haben!). Das ist ein erster Entwurf, der sicher noch verfeinert werden kann. Die Buttons in den Abfragen können über die mit der Maus, oder den Cursortasten und "enter" bedient werden.

Für eSpeak müssen die Sprach-Optionen nach dem "de" (oder welche Sprache/Stimme auch immer verwendet werden soll) wie gehabt mit einer Leerstelle dazwischen eingegeben werden (also z.B. "de -s165 -g2"; da ist mir noch nichts Gescheiteres eingefallen...

Das Teil benötigt allerdings yad.

Über Rückmeldungen, weitere Vorschläge, Verbesserungen, Hinweise etc freue ich mich natürlich; ich werde auch die yad-Version des eigentlichen xsant2speech-Skriptes nochmal überarbeiten und hier reinstellen.

so long
hank

EDIT: Irgendwas stimmt mit den eSpeak-Spracheinstellungen noch nicht; die " lassen sich anscheinend nicht per sed übertragen, irgendwas hakt da leider noch.

EDIT 2: Jetzt habe ich den Fehler gefunden, und ein korrigierten SKript angehängt, damit sollte alles funktionieren!

xsanekonf.sh (3.5 KiB)
Skript zum Erstellen einer Konfigration für xsane2speech
Download xsanekonf.sh

grumpy_grizzly

Avatar von grumpy_grizzly

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 263

Wohnort: Stockholm

Ich hab nur mal kurz drübergeschaut. Die sed-Kommandos in Zeile 10 und 66 sind leicht verschieden (mit und ohne einschließende \" \"), ist das Absicht?

Die echos in Zeile 60 und 63 sehen auch etwas seltsam aus.

In Zeile 9 hast du

CONFIG3=`cat $CONFIG2`

an allen anderen Stellen verwendest du stattdessen $( ), würde ich also auch dort so machen.

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11314

Wohnort: Bremen

Hi!

Danke fürs Draufschauen! Die Zeilen 10 und 66 sind unterschiedlich, weil ich mit den Anführungsstrichen dort etwas anders umgegangen bin; das spiegelt sich in den echo-Anweisungen wieder (ich vermute, du meinst die doppelten " dort?).

Es funktioniert zwar so, aber "übersichtlicher" ist natürlich, beide male das selbe Konstrukt zu nehmen:

                { if [[ "$CUNSET1" != "" ]] ; then 
		echo $XSANESCRIPT $OCR $SYNTH1 $ocrlang2 $synthlang2 $CUNSET1 &>$FILE2
		XSANECONFIG="$XSANESCRIPT $OCR $SYNTH1 $ocrlang2 $synthlang2 $CUNSET1"
		else
		echo $XSANESCRIPT $OCR $SYNTH1 $ocrlang2 $synthlang2 &>$FILE2
		XSANECONFIG="$XSANESCRIPT $OCR $SYNTH1 $ocrlang2 $synthlang2"
		fi }
		sed -i '/"ocr-command"/ { n; s:.*:'"\"$XSANECONFIG\""': }' $HOME/.sane/xsane/xsane.rc

grumpy grizzly schrieb:

In Zeile 9 hast du

CONFIG3=`cat $CONFIG2`

an allen anderen Stellen verwendest du stattdessen $( ), würde ich also auch dort so machen.

Da geht es sogar so:

CONFIG2=`cat $(yad --file-selection --title "Name und Ort der Konfigurationsdatei-Datei" --filename="$HOME/.sane/xsane/xsane2speech.conf")`

spart eine Zeile 😉; und dann kann man auch den selben Varablennamen nehmen, also statt $CONFIG3 gleich $XSANECONFIG, und dann den ersten Befehl rausnehmen, und den zweiten eine Ebene weiter nach unten zu schieben - das ist dann noch "eleganter" *hust*

so long
hank

xsanekonf.sh (3.4 KiB)
Nochmal verbesserte Version des xsane2speech-Konfigurationserstellungsskriptes
Download xsanekonf.sh

grumpy_grizzly

Avatar von grumpy_grizzly

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 263

Wohnort: Stockholm

Heinrich Schwietering schrieb:

Danke fürs Draufschauen! Die Zeilen 10 und 66 sind unterschiedlich, weil ich mit den Anführungsstrichen dort etwas anders umgegangen bin; das spiegelt sich in den echo-Anweisungen wieder (ich vermute, du meinst die doppelten " dort?).

Ja die doppelten Anführungszeichen meinte ich, was für einen Zweck sollte denn echo ""$bla"" haben? Das ist das selbe wie echo $bla. Bash kennt keine inneren und äußeren Anführungszeichen, falls das deine Idee dahinter war?

Da geht es sogar so:

CONFIG2=`cat $(yad --file-selection --title "Name und Ort der Konfigurationsdatei-Datei" --filename="$HOME/.sane/xsane/xsane2speech.conf")`

Ich meinte eigentlich dass die beiden Schreibweisen äquivalent sind und man sich deshalb für eine von beiden entscheiden sollte. ☺ Die Kommandoersetzung kann man verschachteln, also $(... $(...)) funktioniert auch.