我遇到了奇怪的问题。当从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
以下是示例:示例脚本
#!/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' '
当我在剧本上面时,我收到以下错误:
test: line 12: syntax error near unexpected token `('
test: line 12: `paste <(echo "$x") <(echo "$y") -d' ''
以下是我正在使用的shell的详细信息。
echo $SHELL
/bin/bash
bash --version
GNU bash, version 4.2.47(1)-release (x86_64-suse-linux-gnu)
有没有其他方法可以绕过这个问题?不一定我想坚持过程替代。
所需的o / p:
a b c 1
d e f 2
g h i 3
j k l 4
答案 0 :(得分:4)
当bash处于POSIX模式时,进程替换不起作用。请禁用POSIX,然后重试。
禁用:这将导致进程替换工作。
set +o posix
启用::这将导致进程替换不起作用。
set -o posix