[gelöst] do, done, newline verzweifeln - Bash Script Error

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
synapsenstau
Beiträge: 171
Registriert: 08.10.2013 09:56:34
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Südharz

[gelöst] do, done, newline verzweifeln - Bash Script Error

Beitrag von synapsenstau » 10.03.2015 01:05:57

Ich sitze gerade an diesem (NoPaste-Eintrag38370) Script. Es soll mir Track und Interpret ausgeben, welcher gerade in Vlc gespielt wird. Diese Ausgabe wird dann von einem anderem Programm weiterverwendet.
Immer wenn ich es Testhalber ausführe kommt diese Fehlermeldung:

Code: Alles auswählen

xx@xx:./now_play.sh
./now_play.sh: Zeile 89: Syntaxfehler beim unerwarteten Wort `newline'
./now_play.sh: Zeile 89: `                done'
Ich starre nun schon die ganze Zeit darauf und sehe den Fehler nicht. Das "do...done" sieht aus wie das davor und das funktioniert auch. Ich könnte mal ein paar Hilfsaugen gebrauchen.
Zuletzt geändert von synapsenstau am 10.03.2015 23:27:23, insgesamt 1-mal geändert.
..::: Intel® Core™ i5-6600 :::..::: 16 GB Ram :::..
..::: 1 TB Nvme :::..::: 1 TB SSD :::..::: NVIDIA GeForce GTX 1070 :::.

Benutzeravatar
LessWire
Beiträge: 558
Registriert: 21.11.2004 04:36:04
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bavaria

Re: do, done, newline verzweifeln - Bash Script Error

Beitrag von LessWire » 10.03.2015 06:22:05

Vielleicht wurde mal mit einem Windows Editor editiert und es hat sich ein CR an der Stelle eingeschlichen? Ich würde mal "dos2unix" über die Datei laufen lassen.

Gruß, LW
at ~ now.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: do, done, newline verzweifeln - Bash Script Error

Beitrag von uname » 10.03.2015 08:15:13

Kannst evtl. auch einfach deinen eigenen Paste aus NoPaste zurückkopieren. Nutze einen ordentlichen Editor wie z.B. Vim. Im Vim kannst du mal die Option ":set list" probieren.

Benutzeravatar
CH777
Beiträge: 1466
Registriert: 27.05.2008 16:37:17

Re: do, done, newline verzweifeln - Bash Script Error

Beitrag von CH777 » 10.03.2015 10:10:57

in Zeile 86 fehlen glaube ich ein $ und ein Leerzeichen.

Benutzeravatar
synapsenstau
Beiträge: 171
Registriert: 08.10.2013 09:56:34
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Südharz

Re: do, done, newline verzweifeln - Bash Script Error

Beitrag von synapsenstau » 10.03.2015 20:06:07

LessWire hat geschrieben:Vielleicht wurde mal mit einem Windows Editor editiert und es hat sich ein CR an der Stelle eingeschlichen? Ich würde mal "dos2unix" über die Datei laufen lassen.
dos2unix hat nichts geändert, leider. Ich habe das Script aber mit Kate bearbeitet und welches steht "Zeilenende/Unix". Damit sollte das sich schon im vorfeld erledigt haben.
uname hat geschrieben:Kannst evtl. auch einfach deinen eigenen Paste aus NoPaste zurückkopieren. Nutze einen ordentlichen Editor wie z.B. Vim. Im Vim kannst du mal die Option ":set list" probieren.
Hat leider auch nicht geholfen das zurückkopieren und mit Vim kann ich mich nicht wirklich anfreunden.
CH777 hat geschrieben:in Zeile 86 fehlen glaube ich ein $ und ein Leerzeichen.
Ja, dem könnte so sein. Habe es mal eingefügt, nur dann sagt er mir, das man die vorangehende for schleife nicht so mit einem do verwenden dürfe. Alles sehr rätselhaft. Das hat man davon wenn man nicht funktionierende example scripte von Programmen zum laufen bringen will. Am besten neuschreiben....
..::: Intel® Core™ i5-6600 :::..::: 16 GB Ram :::..
..::: 1 TB Nvme :::..::: 1 TB SSD :::..::: NVIDIA GeForce GTX 1070 :::.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: do, done, newline verzweifeln - Bash Script Error

Beitrag von rendegast » 10.03.2015 21:36:10

Code: Alles auswählen

                progressbar="${progressbar}|"
                for((i=1;i<(10-nrate);i++))
                do
                        progressbar="${progressbar}-"
                done
->

Code: Alles auswählen

                progressbar="${progressbar}|"
                for((i=1;i<$((10-nrate));i++))
                do
                        progressbar="${progressbar}-"
                done
oder

Code: Alles auswählen

                progressbar="${progressbar}|"
WERT=$((10-nrate))
                for((i=1;i<WERT;i++))
                do
                        progressbar="${progressbar}-"
                done
(Leerzeichen nach dem for ist schöner, aber nicht nötig)

Warum? k.A.

-----------------------------------------------------------------------
Die Sonderzeichen in den Variablen (Pipe, eckige Klammer) würde ich ersetzen, potentielle Ostereier.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
synapsenstau
Beiträge: 171
Registriert: 08.10.2013 09:56:34
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Südharz

Re: [gelöst] do, done, newline verzweifeln - Bash Script Err

Beitrag von synapsenstau » 10.03.2015 23:34:42

Großen dank dir @rendergast. Dat wars. Es war so klein und unscheinbar das es komplett übersehen habe.

Das mit den Sonderzeichen ist klar, hat ber bis jetzt noch keine Probleme gemacht (was nicht ist, kann ja noch werden). Außerdem sieht es nett aus 8)

Die Ausgabe nun wie gewünscht/gedacht:

Code: Alles auswählen

/me is listening to: Symbolic And Avalon - Modern Age (Modern Age) from 2015 [01:49/08:27] [--|-------] [0 kbps](VLC media player)
..::: Intel® Core™ i5-6600 :::..::: 16 GB Ram :::..
..::: 1 TB Nvme :::..::: 1 TB SSD :::..::: NVIDIA GeForce GTX 1070 :::.

Antworten