在做批量部署和启动flume(flume-1.3.1)的时候,发现有些机器无法自启动,检查时发现启动时报错如下
/opt/local/flume-1.3.1/bin/flume-ng: line 81: syntax error in conditional expression: unexpected token `('
/opt/local/flume-1.3.1/bin/flume-ng: line 81: syntax error near `^java\.library\.path=(.'
/opt/local/flume-1.3.1/bin/flume-ng: line 81: ` if [[ $line =~ ^java\.library\.path=(.*)$ ]]; then'
启动脚本有问题,bash对正则表达式的解析错误,又是bash版本导致的
把81行脚本 if [[ $line =~ ^java\.library\.path=(.*)$ ]]; then 中的正则表达式用双引号包含即可,修改如下
if [[ $line =~ "^java\.library\.path=(.*)$" ]]; then
另外还有101行 if [[ $PIECE =~ slf4j-(api|log4j12).*\.jar ]]; then ,修改如下
if [[ $PIECE =~ "slf4j-(api|log4j12).*\.jar" ]]; then
130行 if [[ $line =~ ^java\.library\.path=(.*)$ ]]; then,修改如下
if [[ $line =~ "^java\.library\.path=(.*)$" ]]; then
150行 if [[ $PIECE =~ slf4j-(api|log4j12).*\.jar ]]; then,修改如下
if [[ $PIECE =~ "slf4j-(api|log4j12).*\.jar" ]]; then