如何使大型命令行分成两行并在脚本中作为单行执行

如何使大型命令行分成两行并在脚本中作为单行执行

我正在使用 IBM z/OS390,并且正在使用 OMVS shell。我根本没有安装“vi”,所以我使用“oedit”。如果我尝试直接从 OMVS shell 初始化 app.jar,它会完美运行。我的意思是,如果我到达 java 目录并使用下面的两个命令从那里启动应用程序,它可以 100% 工作。

cd /WebSphere/was85/mycel/mynode/AppServer/java_1.7_64/bin
./java -cp /usr/my.jar com/com.my_comapny_witt_entire_name/myMain 

我通过 OEDIT 创建了一个脚本文件并添加了两行。第二个断成两行。不幸的是,我显然收到此错误,因为在运行时,第二个命令行已被视为不同的两行。

$ ./script_boot_app
Error: Could not find or load main class com.my_comapny_witt_entire_name.
/myMain: ./script_boot_app 3: FSUM7351 not found

如果路径和 java 包名称足够小以适合一行,则可能不会发生这种情况。所以我的问题是:如何使用 OEDIT 并保证多行将被视为一行,就像我直接从 shell 执行命令时所做的那样?当在 OMVS shell 中直接输入并到达行尾时,我自然会在下面的行中继续,并将其作为单个命令行执行。如何在 OEDIT 工具中创建的脚本中执行相同的操作?

答案1

cd应该是必需的。下面的行应该做同样的事情。

/WebSphere/was85/mycel/mynode/AppServer/java_1.7_64/bin/java -cp \
    /usr/my.jar com/com.my_comapny_witt_entire_name/myMain 

我使用反斜杠延续将命令行分成两行。反斜杠和换行符之间不能有任何字符才能继续工作。

另一种方法是将 Java bin 目录添加到 PATH 变量中,位于任何包含 java 的目录之前。该命令which java应该告诉您将使用哪个 java。

PATH=/WebSphere/was85/mycel/mynode/AppServer/java_1.7_64/bin:$PATH
java -cp /usr/my.jar com/com.my_comapny_witt_entire_name/myMain 

答案2

首先,最好始终检查 的退出状态cd,因此

cd /WebSphere/was85/mycel/mynode/AppServer/java_1.7_64/bin && ./java -cp /usr/my.jar com/com.my_comapny_witt_entire_name/myMain

cmd1 && cmd2cmd2表示成功则执行cmd1

现在我怀疑你的问题是该脚本没有被 OMVS shell 解释(它是一个 POSIX shell,所以应该可以解释这两行)。

或者当然,这可能只是因为找到命令时的那些拼写错误(comapny, wittjava,这意味着要找到它,当前目录以及位于/WebSphere/was85/mycel/mynode/AppServer/java_1.7_64/bin

答案3

只是一个反斜杠

cd /WebSphere/was85/mycel/mynode/AppServer/java_1.7_64/bin ./java -cp \
/usr/my.jar com/com.my_comapny_witt_entire_name/myMain

相关内容