ubuntuusers.de

Suche Text-Input-Befehl für Bash-scripting

Status: Gelöst | Ubuntu-Version: Lubuntu 16.04 (Xenial Xerus)
Antworten |

Rosika

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Hallo zusammen,

kann mir vielleicht jemand helfen?

Ich interessiere mich für Bash-scripting und habe mir gerade ein paar Grundlagen angeeignet. Besonders gut kenne ich mich also noch nicht aus.

Ich habe ein kleines Script (Text-To-Speech-Programm starten) geschrieben , welches mich auffordert, zuerst eine Sprache (Englisch oder Deutsch) zu wählen und dann einen Text einzugeben (den würde ich aus der Zwischenablage einfügen). Danach wird eine Text-File generiert und davon dann das TTS-Programm "pico2wave" gestartet. Vielmehr ein zweites Script, welches ich der Seite https://wiki.ubuntuusers.de/Sprachausgabe/ entnommen habe. Die Auswahl zwischen Deutsch und Englisch wird ebenfalls getroffen.

Das script, das ich schrieb ,funktioniert auch, aber ich glaube, ich habe nicht den richtigen Befehl für den Text-Input. Ich kenne nur "read", aber der Text, der in die Variable geschrieben wird, wird nicht vollständig wiedergegeben , nur die erste Zeile. Gibt es einen anderen Befehl, der mir den Input von längeren Texten erlaubt, den ich dann in eine .txt-Datei schreiben kann?

Vielen Dank im voraus. Rosika 😐

P.S.:

Hier noch mein Script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash

echo "Wählen Sie die Sprache aus: e für Englisch, d für Deutsch."
read sprache
if [ $sprache = "e" ]
then
	echo "Bitte geben Sie den englischen Text ein."
	read texte
	echo $texte > /tmp/EText.txt
	cd /tmp
	svoxE.sh EText.txt
	rm /tmp/EText.txt
fi
sleep 2.0
if [ $sprache = "d" ]
then
	echo "Bitte geben Sie den deutschen Text ein."
	read textd
	echo $textd > /tmp/DText.txt
	cd /tmp
	svoxD.sh DText.txt
	rm /tmp/DText.txt
fi
sleep 2.0

echo "Das Programm wird nun beendet."



frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7790

Read liest eine Zeile.

Mit einer while Schleife kannst du dann mehrere Zeilen lesen. Die Frage ist dann eher woran man erkennen soll, daß es keine weiteren Zeilen mehr gibt.

Wenn es anders sein darf, kannst du einfach cat > datei.txt machen und die Eingabe dann mit Strg+D beenden.

Oder aber du machst es ganz auf Luxus und startest $EDITOR so wie das Mailprogramme, oder crontab -e machen.

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Hallo frostschutz,

vielen herzlichen Dank für Deine Antwort und die Lösungsvorschläge.

Wenn es anders sein darf, kannst du einfach cat > datei.txt machen und die Eingabe dann mit Strg+D beenden.

Ich habe mich dafür entschieden und das Script dahingehend umgeschrieben, und es klappt. Klasse. Echt super, was man mit Scripting alles machen kann, wenn man weiß, wie´s geht. 😉 Da ich noch echter Anfänger bin, mache ich mich auf die Suche nach Grundlagen im Internet. Hoffentlich finde ich etwas, das gut für Beginner geeignet ist.

Nochmals vielen Dank und ein schönes Wochenende. Grüsse. Rosika ☺

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

... aber unser bash Scripting Wiki kennst Du, und Greg's Wiki auch ?

Sonst kannst Du Dich ja auch noch bei mir ein wenig umsehen, ob Du davon was gebrauchen kannst.

LG,

track

Rosika

(Themenstarter)

Anmeldungsdatum:
26. Februar 2016

Beiträge: 1359

Hallo track,

danke vielmals für Deine Mitteilungen.

Das bash Scripting Wiki habe ich in der Zwischenzeit auch entdeckt. Dennoch vielen Dank für den Hinweis. Die Seite http://mywiki.wooledge.org/BashGuide habe ich noch nicht gekannt. Ich denke, die wird mir weiterhelfen. Und bei Dir gibt´s ja viele Links für´s Scripten. Klasse. So werde ich auf jeden Fall weiterkommen.

Nochmals herzlichen Dank und ein schönes Rest-Wochenende. Grüsse. Rosika ☺

Antworten |