BASH |在另一台计算机上运行脚本时出现语法错误?

时间:2013-09-19 17:15:18

标签: bash syntax-error

我在剧本中有这一行:

readarray -t vCollection < <(cut -d, -f2 $1)

我的电脑上的一切都运行良好,当我将脚本移动到服务器时,会抛出语法错误:

AddACE_Nexus.sh: line 87: syntax error near unexpected token `<'
AddACE_Nexus.sh: line 87: `readarray -t vCollection < <(cut -d, -f2 $1)'

在服务器上,bash版本是3.2.51(1)-release(x86_64-suse-linux-gnu)

我评论了该部分&lt; &lt;(cut -d,-f2 $ 1)然后没有发现错误

如何更新我的语法以使脚本在服务器上运行,就像在我的PC上一样?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您应该使用bash运行脚本,

bash script.sh

或者为脚本使用正确的标题。

#!/bin/bash
...

普通shell不支持进程替换(<())。 bash如果被称为sh,则将其自身设置为不支持该功能的POSIX兼容模式。

另一个解决方案是在脚本上明确禁用POSIX模式,以防sh实际上是bash,但只是指向它的链接。

#!/bin/bash
set +o posix
...

如果使用sh以某种方式调用脚本,即使标题已经在sh script.sh已经存在,那将会很有用。