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),如果指定了解释器,那么就将该脚本交给指定的解释器。
标签:bin,unexpected,start,32,xxx,cluster,sh,bash 来源: https://blog.csdn.net/chanyue123/article/details/122702070