我遇到了一个奇怪的问题。当我从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)
有没有其他绕过这个问题的方法?不一定要使用进程替换。
期望输出:
a b c 1
d e f 2
g h i 3
j k l 4
CRLF
的DOS换行符吗?可能是从Windows编辑器复制过来的吧? - undefinedposix
。 - undefined