小编Ste*_*Chu的帖子

执行本地脚本时GNU并行继承环境变量

假设我使用并行进行foo.sh调用bar.sh

# foo.sh

#! /bin/bash

parallel -N 3 bar.sh ::: $(seq 10)
Run Code Online (Sandbox Code Playgroud)

我的bar.sh工作方式是这样的:如果设置了环境变量(例如DEBUG=1),那么它将输出大量调试信息。

理想情况下,我想简单地执行我的foo.sh这样:

$ DEBUG=1 foo.sh
Run Code Online (Sandbox Code Playgroud)

通常,foo.sh有价值$DEBUG并且bar.sh能够看到它。但现在我使用 GNU parallel 来调用bar.sh,这是一个本地程序, mybar.sh不再有DEBUG值集。

我读到,--env只有在我设置了远程执行的情况下才有效-S,从我的尝试来看,它似乎对我不起作用。

有没有办法让我的并行化bar.sh简单地“继承”我的环境设置foo.sh?我真的不想在bar.sh并行调用时详细说明每个环境变量及其值。

TIA

linux parallel-processing bash gnu-parallel

5
推荐指数
1
解决办法
2520
查看次数

在 Bash 管道中以块的形式读取标准输入

我有一些与管道一起工作的 shell 脚本,例如:

foo.sh | bar.sh
Run Code Online (Sandbox Code Playgroud)

bar.sh调用了一些只能接受一定数量的标准输入行的命令行程序。因此,我希望将foo.sh的大标准输出分成 N 行以进行多次bar.sh调用。本质上, paginatefoo.sh的 stdout 并执行多个bar.sh.

是否可以?我希望在管道之间有一些魔法,比如foo.sh | ??? | bar.sh. xargs -n并没有完全得到我想要的。

linux bash pipe

3
推荐指数
1
解决办法
1233
查看次数

标签 统计

bash ×2

linux ×2

gnu-parallel ×1

parallel-processing ×1

pipe ×1