• 运行shell脚本时报错"[[ : not found"解决


    问题描述

    我在jenkins传递参数运行shell脚本构建java部署时报错,报错为:

     

    同样这个脚本在另一台机器jenkins上执行顺利,报错显示脚本20行报错

    脚本代码如下:

    #!/bin/sh

    . /etc/profile
    env=$1
    javastart="$2"
    project_name=xxxxxx
    jar_name=${project_name}.jar
    jar_dir=$WORKSPACE/$project_name/target
    remote_user=deploy
    remote_port=91000
    remote_uploaddir=/data/project/jar_upload/
    remoteshell_path=/data/project/jenkins_shell/deploy.sh
    #####ip#####
    ip=$3
    n=`echo $ip | awk -F ',' '{print NF}'`
    for i in `seq 1 $n`
    do
    remote_server[$i]=`echo $ip | awk -v z="$i" -F ',' '{print $z}'`   ###20行在这,
    done

     

    jenkins项目内执行脚本如下:

     

     

    解决办法

    脚本功能就是主要用来传递参数筛选IP,便于jenkins页面指定部署机器。,但是在运行至判断表达式时报错,无法识别"[[]]"表达式。

    最终也找到了问题的解决办法:bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,而"[[]]"是bash脚本中的命令,因此在使用解释器sh执行时,到了20行remote_server[$i]这个中框号就无法识别,

    1、将脚本首行解释器sh替换为bash命令即可:

    #!/bin/sh
    更改为:#!/bin/bash

     

    2、jenkins页面使用sh xxx/xxx/.sh去掉sh后者改为./再或者bash都行

    再次执行jenkins构建启动脚本成功。

    如果你恰好也是这个情况或者是sh xxx.sh脚本报错这个not found的话,可以试下bash xxx.sh,原理都是一样哈,sh解释器无法识别[],尽量使用bash哈。

     

     

    专业从事搬砖多年,还是在继续搬砖中,厚积薄发~
  • 相关阅读:
    熟悉常用的HDFS操作
    爬虫爬取小说网站
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    综合练习:词频统计
    最近在学习多元分析,有空放上来分享
    机器学习基石作业一15-20题(Python实现)
    2018十月份
  • 原文地址:https://www.cnblogs.com/Crazy-Liu/p/14812301.html
Copyright © 2020-2023  润新知