如何向shell发送许多命令并等待结束后的命令

Jon*_*pez 17 command-line shell

我有大约 20 个命令,我必须将所有这些发送到 Unix shell 并复制结果,但我不知道该怎么做。

我不确定我有什么 shell,因为它是一个连接到移动网络管理的小程序,使用这个小程序我们可以按行发送命令并通过尖叫接收结果,因此我不能使用脚本发送命令。

命令 1 - 与服务器连接。

等到命令 1 完成

命令 2 - 更新来自服务器 1 的所有信息完成

等待。

命令 3。获取一些参数。

...以及更多这样的命令。

试着cmd1 | cmd2 | cmd3 cmd1 & cmd2 & cmd3cmd1;cmd2

问题在于cmd1它连接到 RNC(网络元素)并需要大约 15 秒,然后cmd2才有意义。但只适用于第一个 cmd。任何线索,如何运行这个?

fro*_*utz 21

通常只是cmd1;cmd2;cmd3;cmd4(如果您想将其写在一行上),或者cmd1 && cmd2 && cmd3 && cmd4在 cmd2 失败时不想运行 cmd3 时使用。

或者,;您可以每行只写一个命令。

cmd1
cmd2
cmd3
cmd4
Run Code Online (Sandbox Code Playgroud)

如果您希望命令在后台并行运行,您还可以使用

cmd1 &
cmd2 &
cmd3 &
cmd4 &
wait # for cmd1-4 to finish
Run Code Online (Sandbox Code Playgroud)

这些方法中的任何一个也可以放在 shell 脚本中。在 shell 脚本中编写的内容与在实际 shell 中编写的内容之间几乎没有区别。

  • 在`cmd1;cmd2` 的情况下(或`cmd1 && cmd2`) cmd2 不会运行,直到 cmd1 退出(因此大概完成)。所以应该没有任何问题 - 请改写您的问题,或提供一个人们可以实际复制的示例。 (4认同)

von*_*and 1

只需使用一个脚本,一个包含依次运行的命令的文件,例如:

#!/bin/sh

command-01
command-02
...
command-20
Run Code Online (Sandbox Code Playgroud)

第一行 (shebang) 告诉使用 运行以下命令/bin/sh,使文件可执行 ( chmod u+x your-little-script) 然后您可以通过 运行它./my-little-script。这样你就不会遗漏任何一步;-)

阅读shell的手册,它提供了完整的编程语言。检查bash(1)这是否是可用的,否则是 Korn shell ksh(1)。它们提供了许多有用的功能来控制脚本中的控制流(或交互地)。