微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flink问题:解决 bin/config.sh: line 32: syntax error near unexpected token

问题

执行 sh start-cluster.sh脚本启动集群,报错:

/xxx/bin/config.sh:行32: Syntax error near unexpected token `(`
/xxx/bin/config.sh:行32: `    done << (find "$FLINK_LIB_DIR" ! -type d -name '*.jar' -print0 | sort -z)'

解决

不要使用sh来启动,使用 bash start-cluster.sh 或 ./start-cluster.sh来启动。

这是因为start-cluster.sh文件中有sh不支持的语法。下面说明下bash和sh的区别:

bash是sh的增强版,sh全称是Bourne Shell,bash全称是Bourne Again Shell,linux系统认使用的就是bash的posix模式。可以查看 echo $SHELL。值为/bin/bash。虽然sh是个软连接,指向了bash,但是还是有区别的,sh执行的相当于bash -posix xxx.sh,也就是说xxx.sh脚本必须遵守posix的规则,如果不然就会报错。
shell script一般第一行指定解释器,所以还是指定#!/bin/bash好,不要再用#!/bin/sh了。
sh是一个shell。运行sh a.sh,表示我使用sh来解释这个脚本;如果我直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器,如果没指定,那么就用当前系统认的shell(大多数linux认是bash),如果指定了解释器,那么就将该脚本交给指定的解释器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐