linux脚本无法执行命令,shell脚本在Windows下能执行,而Linux不能执行的原因及解决...
有一个shell脚本可以在Windows和Linux系统中执行,但是要用到这个脚本.sh文件时,Windows下测试可以运行,复制到Linux环境就运行不了,因为多了^M字符。下面解说产生问题的具体原因及解决方法。
shell脚本的内容
#!/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下面就执行不了,报错内容如下:
原因
在Linux下如上图,其意思是说因为复制粘贴,然后有一些看不见的特殊字符,你可以看到上图有很多的^M字符出现。在Linux执行cat -v可以看到有很多^M的字符,这个是Windows的换行,所以在Linux中执行脚本会失败。而在Windows中可以识别这些换行,所以在Windows中可以正常执行脚本。
解决方法
vi 文件名
命令模式下输入:
:set fileformat=unix
:w
然后重新cat -v一下看到^M都没有了,这样脚本就可以在Linux中执行起来了。
相关主题
linux脚本无法执行命令,shell脚本在Windows下能执行,而Linux不能执行的原因及解决...相关推荐
- linux读取一行数据命令,Shell脚本一次读取文件中一行的2种写法
写法一: #!/bin/bash while read line do echo $line #这里可根据实际用途变化 done < urfile 写法二: #!/bin/bash ca ...
- linux shell命令分布执行,Linux学习笔记:bash特性之多命令执行,shell脚本
今天我们学习了bash特性多命令执行包括各个命令之间的逻辑关系.其中包含"与""或""非"命令的执行.下面即为我们所学习的这些逻辑命令关系之 ...
- 详解在 Linux 启动时,如何自动执行命令或脚本
2019独角兽企业重金招聘Python工程师标准>>> 我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情.按下开机键或启动一个虚拟机,你就启动了一系列事件,之后 ...
- linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]
Shell脚本相关命令 介绍 一句话说明shell脚本是个啥 shell脚本就是将多个shell指令汇集到一起去完成一个复杂的功能 类似windows下的批处理文件 一般以sh为文件后缀 语法 程序结 ...
- linux执行命令脚本,Linux - 执行命令与脚本
01 - Linux执行多条命令 方法1:在命令行下可以一次性粘贴多条语句,shell会依次执行并输出结果 方法2:在一个命令行中,用分号将各个命令隔开或者使用&&连接各个命令 示例: ...
- crt脚本怎么添加等待时间_如何在重启或启动时执行命令或脚本 | Linux 中国
有时你需要在启动时添加自定义脚本.命令或服务,该怎么做? 来源:https://linux.cn/article-12279-1.html 作者:Magesh Maruthamuthu 译者:geek ...
- Linux开机后自动执行命令或脚本
文章目录 说明 应用场景 涉及文件 步骤 1.添加开机执行指令 2.编写脚本 3.测试效果 自动化编辑工具 脚本 效果 已存在的脚本 不存在的脚本 说明 应用场景 应用场景:开机后自动执行命令或脚本 ...
- 如何在 Linux 中创建并运行 Shell 脚本(Bash 初学者教程)
文章目录 1.创建并运行第一个 shell 脚本 2.将 shell 脚本转换为 bash 脚本 3.为什么大多数 shell 脚本都包含 #! /bin/bash 在 shell 脚本的开头? 4. ...
- java 读取ssh2协议得到的数据_Java通过SSH2协议执行远程Shell脚本
Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) ganymed-ssh2简介: Ganymed SSH-2 for Java是用纯Java实现SS ...
- Linux 之旅 10:Shell 脚本
Linux 之旅 10:Shell 脚本 (图片来自shell/bash脚本编程) Linux 上的 Shell 脚本可以看做是类似于Windows上的批处理程序(.bat)一样的东西,其本质就是将一 ...
最新文章
- HDLBits 系列(39)求解带有奇校验的串口接收数据的简化电路设计
- 【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )
- 各种 SAP 产品的自定义 UI 创建和集成方法一览
- 一张图看懂阿里云网络产品[十二]云企业网
- 受上海Model S自燃影响?特斯拉市值周一蒸发18亿美元
- 今天看到一个热搜,说一个美团会员配送费6元,普通用户2元,导致轩然大波
- CSS实现输入框的高亮效果-------Day50
- ALM需求跟踪矩阵导出出错解决
- PS抠图小技巧-【色彩范围】
- duilib隐藏(显示)任务栏图标方式
- 目标检测特殊层:Proposal层
- BatchFormer: Learning to Explore Sample Relationships for Robust Representation Learning
- Aruba 无线调试(Instant AP)
- altf4不管用.是因为未使用内置管理员账户.
- result.append(path)与result.append(path[:])的区别
- 博弈论 纳什均衡 囚徒困境 智猪博弈
- 【2】switch语句练习1:显示法定格式的日期
- h5+ 调用本地摄像头拍照
- 【redis源码分析】Redis Sentinel 是如何实际解决分布式共识问题的
- 4、隐私计算--可信计算
热门文章
- 微信小程序添加服务器域名
- 计算机while语句知识点总结,while循环使用方法
- iOS 开发:知识地图(不定期更新)
- Tomcat8出现To prevent a memory leak, the JDBC Driver has been forcibly unregistered
- 轻轻松松实现角度转换(弧度度分秒)
- 51学习第四天--.跟着郭老师学:程序逐渐加入模块化练习--1从流水灯1s闪烁流动--2再加数码管1~F--3.显示数码管六个灯依次显示123456--再逐渐的加入各种功能,一步一步,可训练思维!
- 常用邮箱的服务器(SMTP/POP3)地址和端口整理
- 网络io,select,poll与epoll的初步认识
- Java项目的项目流程(快速了解)
- 制作window11系统U盘启动盘