Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

wiki:linux:probleme [2009/09/20 21:45]
grossing
wiki:linux:probleme [2015/10/04 04:28] (aktuell)
grossing
Zeile 1: Zeile 1:
-====== Fehlersuche unter Linux ======+**DIE INHALTE DIESER SEITE SIND NACH http://grossing.org/linux/2010/05/18/kmail-script-kopieren-problem.html und http://grossing.org/linux/firefox/ssh/computer/2010/05/18/firefox-auf-zwei-rechnern-und-einem-monitor.html UMGEZOGEN!**
  
-/****** ===== Vorgehensweise ===== ******/ 
-  
- 
-===== Mir bekannte Fehlerquellen ===== 
- 
-==== Scripte ==== 
- 
-=== Scripte aus der Mailanzeige von KMail herauskopieren === 
- 
-Ich habe das Script [[scripte#alle_archive_der_opensuse-de_mailingliste_als_.gz_herunterladen|download.sh]] gemailt bekommen. 
-Das habe ich per Copy&Paste aus KMail in einen Editor kopiert, in ~/bin abgespeichert und mit [[tools#chmod|chmod]] ausführbar gemacht. 
- 
-== Das Problem == 
- 
-Beim Ausführen erhielt ich folgenden Fehler: 
- 
-<code>florian@florian:~/bin> ./download_test.sh 
-./download_test.sh: line 7: syntax error near unexpected token `do' 
-./download_test.sh: line 7: `  for m in $(seq 1 12); do'</code> 
- 
-Beim Absender geht es, bei mir nicht. Rätselraten. Probieren. 
- 
-== Die Ursache == 
- 
-Das Script enthält zwei oder mehr aufeinander folgende Leerzeichen. 
-Das ist eigentlich kein Problem. 
- 
-Wenn ich mir das Script jedoch mit [[tools#mcedit|mcedit]] angesehen habe, wurde für jedes zweite der aufeinander folgenden Leerzeichen statt 0x20 das Zeichen 0xA0 aus der Zeichentabelle verwendet. Die sehen beide gleich aus, sind auch beides Leerzeichen. 
-**ABER:** 0x20 wird auch von der Shell als Leerzeichen erkannt und beim Ausführen ignoriert, 0xA0 wird aber versucht mit auszuführen. 
- 
-In meinem Fall wollte die Shell also nicht <code>«for m in $(seq 1 12); do»</code> sondern <code>« for m in $(seq 1 12); do»</code> ausführen. 
-Beachte das Leerzeichen nach dem «! Das ist das 0xA0. 
-Und da « for» kein Befehl ist, sondern nur «for», kommt für die Shell anstelle von <code>for .. ; do irgendwas; for .. ; do irgendwas;</code> ein <code>for .. ; do irgendwas; do irgendwas;</code> heraus. 
- 
-== Die Lösung == 
- 
-  * Entweder im Script die problematischen Leerzeichen von Hand durch die "richtigen" Leerzeichen ersetzen (aufwendig!) 
- 
-oder 
- 
-  * Die email abspeichern und dann mit einem Texteditor alles außer dem Script entfernen. 
- 
-== Anmerkung == 
- 
-Dieses Problem besteht auch mit einzelnen Befehlszeilen, wenn der Absender z.B. zwischen Befehl und Option(en) aus Versehen zwei Leerzeichen gemacht hat. 
-In diesem Fall einfach das überflüssige Leerzeichen entfernen. 
- 
-Die Shell selber stört sich selber nicht an zwei oder mehreren Leerzeichen: 
-<code> 
-florian@florian:~/bin> head ../Homepage/bytecamp/grossing.de/index.php 
-<?php 
-header("Location: home.php"); 
-exit(); 
-?> 
-florian@florian:~/bin> head          ../Homepage/bytecamp/grossing.de/index.php 
-<?php 
-header("Location: home.php"); 
-exit(); 
-?> 
-</code> 
- 
-Du möchtest selber ein wenig damit herumspielen? Du kannst dir das Script mit den problematischen Leerzeichen [[http://download.grossing.de/script/download-script_mit_falschen_leerzeichen|herunterladen]] 
- 
-\\ 
- 
----- 
-Du hast ein Script oder eine Konfigurationsdatei, die du gerne anderen hier zur Verfügung stellen möchtest? 
-Bitte mit den Kommentaren und eventuell einer Kurzbeschreibung (zum besseren Verständnis) [[linuxwiki@florian-gross.de|mailen]]. Danke! 
- --- //[[florian@grossing.de|Florian Groß]] 2009/09/20 21:37// 

Eigene Werkzeuge