linux运行脚本运行不了,shell脚本在windows上可以执行,Linux上面不能执行

最近项目中用到了脚本.sh文件,本地测试可以跑,放到运行环境跑不了了。

脚本的内容是这样的:

#!/bin/bash -ex

set -ex

WORK_DIR=${WORKSPACE-"$(cd `dirname $0`;pwd)/.."}

PROG_NAME=$0

IMAGE_NAME=$1

IMAGE_VERSION=$2

usage() {

echo "Usage: $PROG_NAME \n

sh build_docker.sh --IMAGE_NAME XXX --IMAGE_VERSION XXX \n

--IMAGE_NAME : package or test \n

--IMAGE_VERSION : service IMAGE_VERSION. eg: 1.0.0 \n

eg: sh build_docker.sh --IMAGE_NAME test --IMAGE_VERSION 1.0.0 \n"

exit 2 # bad usage

}

if [ "$1" == "-h" ];then

usage

fi

while [[ $# -gt 0 ]]; do

key=$1

case $key in

--IMAGE_NAME)

IMAGE_NAME=$2

shift # past argument

shift # past value

;;

--IMAGE_VERSION)

IMAGE_VERSION=$2

shift # past argument

shift # past value

;;

*)

shift # past argument

shift # past value

;;

esac

done

if [ -z "$IMAGE_VERSION" ]; then

echo "ERROR: version is not defined!!!"

exit 1

fi

#cd ${WORK_DIR}/datatransfer/

mvn -DIMAGE_NAME=$IMAGE_NAME -DIMAGE_VERSION=$IMAGE_VERSION clean package docker:build -DskipTests

在windows下面脚本可以跑,放到Linux下面就跑步起来了,报错内容如下:

8da1ea6ceb13

报错信息

8da1ea6ceb13

Linux上查看

在Linux执行cat -v 可以看到有很多^M的字符,这个是windows的换行,所以在Linux中执行脚本会失败。而在windows中可以识别这些换行,所以可以正常执行脚本。

解决办法

vi 文件名

命令模式下输入:

:set fileformat=unix

:w

然后重新cat -v一下看到^M都没有了,这样脚本就可以在Linux中跑起来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值