[gelöst] shell scripting umgebung für echo in ksh

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
gentoo_convertant
Beiträge: 85
Registriert: 21.12.2006 16:39:16

[gelöst] shell scripting umgebung für echo in ksh

Beitrag von gentoo_convertant » 12.03.2007 16:29:09

Hallo,

Ich habe hier http://www.debianforum.de/forum/viewtopic.php?t=80931 zwar schon einen Thread laufen, aber ich glaube, der lange Text schreckt eher ab. :roll:

Meine Frage ist ganz einfach.

Ich habe hunderte von alten Scripten mit #!/bin/sh oder #!/bin/ksh Umgebung, in denen echo ohne Option -e aufgerufen wird (diese Option existiert unter AIX nicht, wo die meisten der Skripte erstellt wurden) und die \xxx Oktale Steuerzeichen ausgeben sollen.

Nun ist unter Debian echo -E der Standard, sodass die Backslash Steuerzeichen als ASCII interpretiert werden.

Kann ich diesen Default irgendwie umgehen? Existiert eine Umgebungsvariable oder eine Konfigurationsdatei, in der ich das Defaultverhalten auf -e ändern kann?

Danke schon im Vorraus,

Alexander
Zuletzt geändert von gentoo_convertant am 13.03.2007 13:32:48, insgesamt 1-mal geändert.

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 13.03.2007 00:18:44

Hi,

für dieses Verhalten ist die Shelloption "xpg_echo" zuständig, welche standardmäßig ausgeschaltet ist. De-/aktiveren lässt sie sich mittels "shopt".

Code: Alles auswählen

echo "ein\tTab"
shopt -s xpg_echo
echo "ein\tTab"
shopt -u xpg_echo
echo "ein\tTab"
Ein paar weitere Infos liefert "man bash".

SubOptimal

gentoo_convertant
Beiträge: 85
Registriert: 21.12.2006 16:39:16

Beitrag von gentoo_convertant » 13.03.2007 07:42:22

Das Problem liegt hier
Ich habe hunderte von alten Scripten mit #!/bin/sh oder #!/bin/ksh Umgebung,
Die sh könnte man so umgehen (wenn auch nur mit Hilfe eines Scripts, das eine bash ausführt und shopt setzt). aber für ksh existiert meines Wissens kein shopt. Und ksh hat unter Debian kein eingebautes echo, sodass das Systemweite echo verwendet wird.

Natürlich könnte ich /bin/ksh durch ein Script ersetzen.

Code: Alles auswählen

#!/bin/bash -l -O xpg_echo
Wenn ich noch zusätzlich die Readline in the vi modus schalte, werden die Benutzer wahrscheinlich nie etwas bemerken. Aber ich bin sicher, dass einige der Skript Probleme machen werden.

gentoo_convertant
Beiträge: 85
Registriert: 21.12.2006 16:39:16

Beitrag von gentoo_convertant » 13.03.2007 13:29:37

Problem gelöst. ksh deinstalliert, pdksh installiert.

Mal sehen ob die Skripte das mitmachen. :roll:

Antworten