ich schreibe ein Makro, was unter Windows und Linux laufen soll. Die Eingangdaten liegen als Textdateien vor und müssen für die Verwendung unter Linux von ISO_8859-15 nach UTF-8 konvertiert werden. Dafür habe ich hier auch schon eine Lösung mit dem Konsolenprog "iconv" gefunden und ein Shellprog geschrieben. Guxdu hier:
Code: Alles auswählen
#/bin/sh
# Aufruf aus der Konsole mit
# bash convert.sh Parameter
echo Parameter 1 $1
iconv $1
Getestet habe ich das in der Konsole, in meinem Unterverzeichnis, mit dem passenden Parameterstring. Funktioniert.
In OO-Basic habe ich dann so programmiert:
Code: Alles auswählen
Sub shellRun(dn$)
dim ef$,param$,qd$,zd$
qd$=dn$+".kal"
zd$=dn$+".ut8"
' creating the execution string
ef$ = "bash "+quellpfad$+"convert.sh"
param$="-f ISO_8859-15 -t UTF8 "+quellpfad$+qd$+" -o "+quellpfad$+zd$
msgbox param$
' running the shell command
msgbox Shell(ef$, 1, param$, TRUE)
End Sub
Als Ergebnis von shell(...) wird 0 (Null) gemeldet, es ist aber keine neue Datei in meinem Verzeichnis.
Wie kann ich überprüfen, ob der Parameterstring richtig übergeben wird?
Bin leider nicht firm in der Shellprogrammierung.
Vielen Dank schon mal,
Martin
Ergänzung: Mittlerweile bin ich darauf gekommen, dass ich die Shell mit OO-Basic-konformen Pfaden und Dateinamen nach RFC1738 versorgt habe. Das habe ich jetzt geändert (mittels convertfromurl(...)) auf absolute Pfade. Macht aber immer noch keine konvertierte Datei.
Mir fehlt nach wie vor eine Möglichkeit zum Prüfen des korrekten Aufrufes meines Shellscriptes.
Martin
Durch weitere Recherche die Lösung erarbeitet:

Zunächst das Shellscript, welches die übergebene Parameterzeile in eine meldung.txt schreibt (bzw. anhängt).
Code: Alles auswählen
#!/bin/bash
# Aufruf aus der Konsole mit
# bash convert.sh Parameter
#Parameter speichern:
echo $1 >> /home/kitter/OO_Kal/meldung.txt
iconv $1
Hier der Shell-Aufruf in OO-Basic:
Code: Alles auswählen
Sub shellRun(dn$)
dim ef$,qd$,zd$,param$
'Die Quelle ist
qd$=convertfromurl(quellpfad$+dn$+".kal")
'Das Ziel ist
zd$=convertfromurl(quellpfad$+dn$+".utf8")
' creating the execution string
ef$ = "bash "+convertfromurl(quellpfad$+"convert.sh")
msgbox ef$
'Parameterstrimg zusammenstellen
param$=chr$(34)+"-f ISO_8859-15 -t UTF8 "+qd$+" -o "+zd$+chr$(34)
msgbox param$
' running the shell command
Shell(ef$, 1, param$, TRUE)
End Sub
Noch ein frohes Osterfest wünscht
Martin