Sie sind nicht angemeldet.

1

10.09.2007, 18:52

Umlaute Fedora -> die seltsame ..

Hallo,

benutze immer noch Fedora Core 5 ohne KDE.

Meine locals und LANG sind auf de_DE eingestellt.

Via Console funktionieren folgende Scripte:

datei1:
Der Text=
Schöne Mädchen überall auf der Straße

sedfile:
s/ä/ae/g
/^Schö/p

sed 's/ä/ae/g' datei1 > datei2: ok
sed -f sedfile datei1 > datei2: ok
cat datei1 | tr '[ä]' '[ae]' > datei2: ok

Versuche ich obige Beispiele direkt aus einem Shellscript, werden in der Zieldatei ALLE Umlaute in der Form =20 =F4 etc. dargestellt. Das besondere dabei ist, dass in der Ausgabedatei z.B. das = Zeichen umgewandelt wird.

Eine Ausgabe von $LANG und der locals aus dem Script heraus bringt ebenfalls de_DE als Einstellung für alle Optionen.

Ziel ist es, im Script aus einer Datei alle dt. Umlaute umzuwandeln ß->ss ä->ae ..

Die Literatur hilft mir hier leider wenig weiter, es werden nur die locals-Setting besprochen bzw. wie Pakete installiert werden.
Aber auf dem Server sind alle notwendigen Pakete vorhanden.
Auch hier im Forum tritt das Problem meistens in Verbindung mit WIN oder anderen Programmen auf.

Habe ich was grundlegendes falsch verstanden oder ist die Umwandlung aus Shellscript heraus nicht möglich (mit Perl und C funktioniert es nämlich).

Danke für einen Tipp.

Gruß
Mike

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

2

10.09.2007, 20:33

RE: Umlaute Fedora -> die seltsame ..

was ist das für ein shellscript? wird das ebenfalls in einer interaktiven konsole gestartet oder durch einen daemonen etc aufgerufen?
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

3

11.09.2007, 04:21

es wird manuell in der bash ausgeführt, auch in eigener shell sh script ist das verhalten gleich.

Das Script ist nur ein Vierzeiler,

Quellcode

1
2
3
4
5
6
#!/bin bash

if [ -f eingang.new ]; then
   sed -f sedfile eingang.new > "/ablage/ausgang.${1}"
   mv eingang.new "/ablage/eingang.${1}"
fi


Aufruf erfolgt wenn das mit dem Konvertieren funktioniert über Cron mit einer 7stelligen Randomziffer

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MIKE bt« (11.09.2007, 04:22)


4

11.09.2007, 09:41

Zitat

Quellcode

1
#!/bin bash


nur ein Tippfehler ???

Wenn nein, dann könnte das der Fehler sein, denn wenn ich mich recht entsinne wird das script dann in der sh ( default ) ausgeführt und nicht in der bash.
Für jedes noch so komplexe Problem gibt es eine einfache, einleuchtende und falsche Lösung.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »brainworm« (11.09.2007, 09:44)


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

5

11.09.2007, 12:14

/bin/sh ist bei Linuxdistributionen ein Symlink gegen die Bash (hat sich als "Quasi-Standard" eingebuergert).
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

6

11.09.2007, 18:45

sorry, war ein Tippfehler.
#!/bin/bash steht schon im Script.

Mit /bin/sh ändert sich allerdings nichts.

Für mich ein Buch mit mehr als sieben Siegeln ist:
warum funktioniert alles über die Console (sed, tr), aber nicht, wenn die identischen Aufrufe im Skript erfolgen.

sys.005: ~ # echo $LANG
de_DE

sys.005: ~ # locale
LANG=de_DE
LC_CTYPE="de_DE"
LC_NUMERIC="de_DE"
LC_TIME="de_DE"
LC_COLLATE="de_DE"
LC_MONETARY="de_DE"
LC_MESSAGES="de_DE"
LC_PAPER="de_DE"
LC_NAME="de_DE"
LC_ADDRESS="de_DE"
LC_TELEPHONE="de_DE"
LC_MEASUREMENT="de_DE"
LC_IDENTIFICATION="de_DE"
LC_ALL=
sys.005: ~ #

Aus dem gleichen Skript heraus (vor den sed Aufruf):

Ausgabe der Systemkonfiguration:
---
de_DE
----
LANG=de_DE
LC_CTYPE="de_DE"
LC_NUMERIC="de_DE"
LC_TIME="de_DE"
LC_COLLATE="de_DE"
LC_MONETARY="de_DE"
LC_MESSAGES="de_DE"
LC_PAPER="de_DE"
LC_NAME="de_DE"
LC_ADDRESS="de_DE"
LC_TELEPHONE="de_DE"
LC_MEASUREMENT="de_DE"
LC_IDENTIFICATION="de_DE"
LC_ALL=

Komisch ...

Thema bewerten