假设我使用并行进行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
我有一些与管道一起工作的 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并没有完全得到我想要的。