是否有办法设置变量,然后在整个管道bash命令中重复使用它,例如
> set v <VALUE> | comm1 v | comm2 v
答案 0 :(得分:2)
我不确定您希望流过第一个管道但是我想以下解决了您的问题。假设您使用bash
:
v=<VALUE>; comm1 $v | comm2 $v
请注意,=
左右不允许有空格。
答案 1 :(得分:0)
你似乎已经描述了这个问题的方式,没有。如果在命令之前分配值,则该值将导出到命令的环境中,但不会影响当前(shell)环境。
$ echo $x
$ x=123 bash -c 'echo $x'
123
$ echo $x
$
使用管道时,您需要创建当前shell的子shell,因此只能识别当前shell和后续子shell中指定的名称。
$ a=123; echo wat | echo $a
123
$ # ^ subshell ^
当然,如果您只是将作业分配为一个单独的步骤,那么这很容易做到这一点,如...
a=123; foo | ( b=123; bar ) | baz …
但您需要手动包装子shell,以便赋值成为每个管道块的一部分。
或者,您可以创建完整的shell作为子项:
a=123 bash -c 'echo $a | bar | baz'
但我无法想到任何方式,这比你在需要时分配价值更好。