• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Text Encoding in einem Bash script?

Ich möchte über ein Bash-Script ein Programm aufrufen und einen Filenamen als Commandline Parameter übergeben. Wenn ich jetzt einen Dateinamen der ein äöü drinnen hat auslese und mit echo $FILE ausgebe dann ist die Ausgabe ok. Wenn ich diese Variable an das Programm übergebe bekomme ich die Fehlermeldung "Datei nicht gefunden ..." und im Dateinamen der Ausgegeben wird habe ich entsprechende Sonderzeichen statt äöü. Wie kann ich jetzt das Encoding der übergebenen Zeichenkette ändern?
 

longman

Advanced Hacker
Wenn ich hier 2 kleine Testscripts laufen lasse, klappt es.
dummy.sh Aufruf: dummy.sh öhi.txt
Code:
#;/usr/bin/bash
echo $1" echo"
"/tmp/dummy2.sh" $1

dummy2.sh:
Code:
#;/usr/bin/bash
echo $1" echo"
cat $1

Ausgabe:
Code:
bs@localhost:/tmp> ./dummy.sh öhi.txt
öhi.txt echo
öhi.txt echo
Test

Welche Language-Kodierung ist denn bei Dir aktiv ? (set |grep -i lang)
Hier ist:
LANG=de_DE.UTF-8

Eventuell musst Du auch noch die Settings LC.... prüfen.
Schau mal in man bash nach.
 
OP
G

Goofy180173

Member
Die LC-settings sind bei mir OK. Die Ausgabe in der Bash ist auch OK. Nur wenn ich den Dateinamen an das Programm übergebe dann meldet das den Fehler.Wie gesagt das Programm verlangt den Dateinamen scheinbar nicht in UTF8. Ich bekomme immer bei ä C$ ich hab keine Ahnung welches Encoding das ist, aber ich hätte halt gerne die gängigsten durchprobiert.
 

panamajo

Guru
Goofy180173 schrieb:
Ich bekomme immer bei ä C$ ich hab keine Ahnung welches Encoding das ist, aber ich hätte halt gerne die gängigsten durchprobiert.
Aussichtslos. Als Workaround empfiehlt sich bei bash alle Zeichen die nicht zum kleinsten gemeinsamen Nenner (US_ASCII) gehören gegen einen neutralen Buchstaben (z.B. _) zu ersetzen.
 
Oben