进程替换在bash脚本中不起作用

P..*_*... 2 bash shell

我陷入奇怪的问题。从bash脚本调用进程替换时,它不能工作,但是从终端拍摄时,它可以工作。

这是示例:在终端上运行时。

terminal>echo "$x"
a b c
d e f
g h i
j k l

terminal>echo "$y"
1
2
3
4

terminal>paste <(echo "$x") <(echo "$y") -d' '
a b c 1
d e f 2
g h i 3
j k l 4
Run Code Online (Sandbox Code Playgroud)

这是示例:示例脚本


    #!/bin/bash
    x='a b c
    d e f
    g h i
    j k l'


    y='1
    2
    3
    4'

    paste <(echo "$x") <(echo "$y") -d' '
Run Code Online (Sandbox Code Playgroud)

当我上面的脚本,我得到以下错误:

test: line 12: syntax error near unexpected token `('
test: line 12: `paste <(echo "$x") <(echo "$y") -d' ''
Run Code Online (Sandbox Code Playgroud)

以下是我正在使用的shell的详细信息。

echo $SHELL
/bin/bash
bash --version
GNU bash, version 4.2.47(1)-release (x86_64-suse-linux-gnu)
Run Code Online (Sandbox Code Playgroud)

是否有其他替代方法可以绕过此问题?我不一定要坚持流程替代。

所需的o / p:

a b c 1
d e f 2
g h i 3
j k l 4
Run Code Online (Sandbox Code Playgroud)

Geo*_*iou 6

当bash处于POSIX模式时,进程替换不起作用。请禁用POSIX,然后重试。

禁用:这将导致进程替换起作用。

set +o posix
Run Code Online (Sandbox Code Playgroud)

启用::这将导致进程替换无效。

set -o posix
Run Code Online (Sandbox Code Playgroud)