企业做网站有用吗,网站推广的常用方法有哪些?,企业网站带商城源码,广东省建设信息中心官网Grouping Commands 命令分组
Bash 提供两种方法将要执行的命令列表分组为一个单元。当命令被分组时#xff0c;重定向可以应用于整个命令列表。例如#xff0c;列表中所有命令的输出可以被重定向到单个流。
() 圆括号命令分组
( list )
将命令列表放在括号之间会强制 she…Grouping Commands 命令分组
Bash 提供两种方法将要执行的命令列表分组为一个单元。当命令被分组时重定向可以应用于整个命令列表。例如列表中所有命令的输出可以被重定向到单个流。
() 圆括号命令分组
( list )
将命令列表放在括号之间会强制 shell 创建一个子 shell请参阅 Command Execution Environment 并且 list 中的每个命令都在该子 shell 环境中执行。由于 list 在子 shell 中执行因此在子 shell 完成后变量分配不会保持有效。
{} 花括号命令分组
{ list; }
将命令列表放在大括号之间会导致该列表在当前 shell 上下文中执行。不会创建子shell。 list 后面需要有分号或换行符。
除了创建子 shell 之外由于历史原因这两种结构之间还存在细微的差异。大括号是保留字因此必须用空白符 blank 或其他 shell 元字符将它们与 list 分隔开。括号是运算符即使它们没有通过空格与 list 分隔也会被 shell 识别为单独的标记。
这两个构造的退出状态都是 list 的退出状态。
Coprocesses 协程
coprocess 是前面带有 coproc 保留字的 shell 命令。协进程在子 shell 中异步执行就好像命令已用 ’ 终止’ 控制操作符在执行 shell 和协进程之间建立双向管道。
协进程的语法是
coproc [NAME] command [redirections] 这将创建一个名为 NAME 的协进程。 command 可以是简单命令请参阅 Simple Commands 或复合命令请参阅 Compound Commands 。 NAME 是 shell 变量名。如果未提供 NAME 则默认名称为 COPROC 。
用于协进程的推荐形式是
coproc NAME { command; } 建议使用这种形式因为简单的命令会导致协进程始终被命名为 COPROC 并且它比其他复合命令更易于使用且更完整。
还有其他形式的协进程
coproc NAME compound-command coproc compound-command coproc simple-command 如果 command 是复合命令则 NAME 是可选的。 coproc 后面的字决定该字是否被解释为变量名如果它不是引入复合命令的保留字则被解释为 NAME 。如果 command 是简单命令则不允许使用 NAME 这是为了避免 NAME 和简单命令的第一个字之间的混淆。
当执行协进程时shell 在执行 shell 的上下文中创建一个名为 NAME 的数组变量请参阅 Arrays 。 command 的标准输出通过管道连接到执行 shell 中的文件描述符并且该文件描述符被分配给 NAME [0]。 command 的标准输入通过管道连接到执行 shell 中的文件描述符并且该文件描述符被分配给 NAME [1]。该管道是在命令指定的任何重定向之前建立的请参阅 Redirections 。文件描述符可以用作 shell 命令的参数以及使用标准字扩展的重定向。除了为执行命令和进程替换而创建的文件描述符之外文件描述符在子 shell 中不可用。
为执行协进程而生成的 shell 的进程 ID 可用作变量 NAME_PID 的值。 wait 内置命令可用于等待协进程终止。
由于协进程是作为异步命令创建的因此 coproc 命令始终返回成功。协进程的返回状态是 command 的退出状态。
GNU Parallel 并行
有一些并行运行命令的方法没有内置在 Bash 中。GNU Parallel 就是一个可以做到这一点的工具。
GNU Parallel顾名思义可用于并行构建和运行命令。您可以使用不同的参数运行相同的命令无论它们是文件名、用户名、主机名还是从文件中读取的行。GNU Parallel 提供了许多最常见操作的速记引用输入行、输入行的各个部分、指定输入源的不同方法等等。Parallel 可以取代 xargs 或将命令从其输入源提供给多个不同的 Bash 实例。