PDA

View Full Version : QSH im CL/Batch Fehler qsh: 001-0014



camouflage
04-02-16, 16:24
Ich bau mir im CL einen QSH Command zusammen. Der soll einen IFS Tree erstellen.
Ruf ich das CL, erhalte ich vom QSH diese Meldung:
"qsh: 001-0014 Befehl mkdir -p /dir/dir/dir nicht gefunden"

Ruf ich den Befehl interaktiv von der CMD Line auf, klappts. Die Befehle sind identisch, also innerhalb Hochkommatas eingeschlossener Befehl.

Kennt das jemand?

Fuerchau
04-02-16, 17:24
Schau dir deinen QSH-Aufruf genau an.
QSH CMD('mkdir -p /.....')
Wenn du die in einer variablen zusammenbaust, darfst du ggf. keine Hochkomma verwenden, da dann der gesamte Ausdruck als ein Kommando interpretiert wird.

Also
chgvar &qsh ('mkdir -p ' *cat &MyDir) <= Keine Hochkommas im Kommando!
qsh cdm(&qsh)

Anders sieht es natürlich mit Leerzeichen in Pfaden und Namen aus.
Die QSH kann aber auch Anführungszeichen auswerten:

mkdir "/Dir/Mit Leerzeichen"

camouflage
04-02-16, 17:42
Baldur,

Perfekt, klappt auf beide Arten. Da hab ich's wohl zu gut machen wollen mit den Anführungszeichen.

Danke und wünsch dir noch einen schönen Abend.

Pikachu
04-02-16, 22:31
Vorsicht: Es gibt da ein paar Unterschiede zwischen keinen, einfachen und doppelten Gänsefüßchen (https://www-01.ibm.com/support/knowledgecenter/mobile/api/content/kc/ssw_ibm_i_72/rzahz/rzahzquoting.htm) innerhalb der QSHELL.

Fuerchau
05-02-16, 09:02
Nur geringfügig:
Hochkomma = keine Interpretation von Variablen und Ersetzungen
'/a/b/mein kommando' <=so aufrufen
Anführungszeichen = mit Interpretation
"$home/mein Kommando" <= Variable $home enthält den Pfad
Solange keine Ersetzungsanweisungen vorkommen 11uist alles gleich.
Wichtig ist lediglich dass alles was eingeschlossen ist als ein Argument interpretiert wird.