我将尽可能好地描述我的问题。
我事先知道,可以在第一行末尾使用反斜杠键入不适合一行的z/OS shell UNIX命令。事实上,我已经在我正在使用的计算机上测试了它,并且执行得很好。
例如,为了进行测试,我输入了ls命令,如下所示:
首先,在命令行中不使用反斜杠:
ls -la
也在命令行中使用反斜杠后:
ls\
-la
我得到了同样好的结果
我想知道的是如何在使用BPXBATCH执行的STDIN中的z/OS UNIX shell脚本中执行相同的操作。
如果我把命令放在下面,ls,-la,它可以很好地执行;但是如果我试图把它分成两行,它就不能工作。
有没有人能说明这个问题?
提前进行了多次推敲
(Obvioulsy ls -la
是一个非常简单的例子,只是为了展示我所面临的问题;真正的命令要大得多)
发布于 2018-06-06 06:23:26
我要试一试。使用BPXBATCH,您希望发出一个shell命令。下面是一个简单的例子:
//TSTRADMB JOB MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=0M
//BPXIT EXEC PGM=BPXBATCH,PARM='SH ls -l'
//BPXPRINT DD SYSOUT=*
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
这具有将外壳命令ls -l
的输出写入标准输出所需的效果。但是-如果它是一个更长的字符串呢?你可以选择两种方式。一种方法是编写一个包装器脚本,然后从BPXBATCH调用它(这就是我要做的)。另一种方法是将PARM放在多行上,在这种情况下,您需要遵循JCL规则来继续(在第72列中使用+),例如
//TSTRADMB JOB MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID,REGION=0M
//BPXIT EXEC PGM=BPXBATCH,PARM='SH ls -l "/u/tstradm/ThisIsAReallyLongD+
// irectoryThatCrossesMultipleLines"'
//BPXPRINT DD SYSOUT=*
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
JCL的间距真的很烦人-所以你必须把它弄对。+号必须在第72列,否则会出现JCL错误。下一行文本的开始从第16列开始。晚一点开始,你会以空格结束(在这种情况下,这将是不同的)。
发布于 2018-05-26 02:16:30
在BPXBATCH中,您实际上希望使用'+‘作为STDIN的延续字符。BPXBATCH是一个TSO命令处理器,因此它使用TSO连续字符,而不是USS‘
https://stackoverflow.com/questions/50354861
复制相似问题