首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在BPXBATCH中编写冗长的z/OS UNIX shell命令

如何在BPXBATCH中编写冗长的z/OS UNIX shell命令
EN

Stack Overflow用户
提问于 2018-05-16 00:14:14
回答 2查看 5.6K关注 0票数 3

我将尽可能好地描述我的问题。

我事先知道,可以在第一行末尾使用反斜杠键入不适合一行的z/OS shell UNIX命令。事实上,我已经在我正在使用的计算机上测试了它,并且执行得很好。

例如,为了进行测试,我输入了ls命令,如下所示:

首先,在命令行中不使用反斜杠:

代码语言:javascript
复制
ls -la

也在命令行中使用反斜杠后:

代码语言:javascript
复制
ls\
 -la

我得到了同样好的结果

我想知道的是如何在使用BPXBATCH执行的STDIN中的z/OS UNIX shell脚本中执行相同的操作。

如果我把命令放在下面,ls,-la,它可以很好地执行;但是如果我试图把它分成两行,它就不能工作。

有没有人能说明这个问题?

提前进行了多次推敲

(Obvioulsy ls -la是一个非常简单的例子,只是为了展示我所面临的问题;真正的命令要大得多)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-06 06:23:26

我要试一试。使用BPXBATCH,您希望发出一个shell命令。下面是一个简单的例子:

代码语言:javascript
复制
//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列中使用+),例如

代码语言:javascript
复制
//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列开始。晚一点开始,你会以空格结束(在这种情况下,这将是不同的)。

票数 8
EN

Stack Overflow用户

发布于 2018-05-26 02:16:30

在BPXBATCH中,您实际上希望使用'+‘作为STDIN的延续字符。BPXBATCH是一个TSO命令处理器,因此它使用TSO连续字符,而不是USS‘

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50354861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档