使用shell脚本常见的一些问题
Jdk版本:jdk-8u102-linux-x64
Tomcat版本:apache-tomcat-7.0.92
Redis版本:redis-5.0.0
由于公司项目的需要,要在多台服务器上面部署一些应用,一个个来部署实在太麻烦了,所以就想到了用脚本部署,然后一点一点的记下来,好记性不如烂笔头
一.jdk脚本的编写
废话不多说,直接上脚本
#!/bin/bash
directory="/tests/test"
jdkname=$directory/jdk-8u181-linux-x64.tar.gz
if [ -f${jdkname}]
then
#判断是否已经安装
if [ $? -eq 0 ]
then
echo "已经安装JDK"
echo "当前JDK版本是"
java -version
exit 1
else
echo "开始解压jdk安装包"
tar zxvf $directory/jdk-8u181-linux-x64.tar.gz
#安装jdk
#配置环境变量
echo --提示:-------开始配置java环境变量!-------
echo "export JAVA_HOME=/java/jdk1.8.0.102" >> .profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> .profile
echo "export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> .profile
source .profile
echo "查看jdk安装的版本"
java -version
echo --提示:-----java安装完毕---------
fi
else
echo "没有安装包,请先上传安装包"
exit 1
fi
以上就是jdk的安装部署脚本,以下是遇到的问题
问题一:在window上面编辑的脚本放到Linux上面去执行,出现如下错误
原因:
因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符。脚本文件是DOS格式的
即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.
1.第一种方法:在linux上面新建一个shell脚本,然后复制window脚本的内容
2.第二种方法: 利用dos2unix 脚本名称,然后回车,再次执行脚本即可
问题二:脚本定义的变量无法识别,原因是定义脚本变量
错误写法:directory = "/tests/test"
正确写法:directory="/tests/test"
shell脚本定义变量=号两边不能有空格
二.总结
以前写shell脚本很少接触,也不知道格式以及它的规范,从这次项目一键部署的工作,让我学到了很多东西。让我成长了不少,每天都是一段旅行,沿途会遇到很多风景,
只要一点点把工作中遇到的问题记下来,对自己也是一个很大的提高。
使用shell脚本常见的一些问题的更多相关文章
- shell脚本常见错误
一.引言 想要学习使用shell脚本,却在开始的时候遇到很多不顺利,都是一些小细节的东西,所以在此记录一下. 二.各种细节问题 1.变量作为赋值对象时不需要添加$,取值时需要,也就是说,这个$就是取值 ...
- shell脚本常见错误一二三
1.$'\r': 未找到命令的解决 2.: 不是有效的标识符h: 3.cd "$path"/webapps/ROOT 不能正常进入ROOT文件夹,$path并未与后面的字符结合起来 ...
- shell脚本常见的结构化函数
if-then if command then command fi if-then-else if command then command else command fi 嵌套if if comm ...
- 【Shell脚本学习4】几种常见的Shell
上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说 ...
- shell脚本中常见的一些特殊符号和作用详解
这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...
- 常见的if语句shell脚本
常见的if语句shell脚本 author :headsen chen 2017-10-17 15:00:07 1,cat if.sh 2, cat if2.sh
- shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
简介 昨天在通过shell脚本实现一个功能的时候,由于对shell处理字符串的方法有些不熟悉导致花了不少时间也犯了很多错误,因此将昨日的一些错误记录下来,避免以后再犯. 字符串的定义与赋值 # 定义S ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
随机推荐
- linux 用户和用户组
groupadd group1 useradd -g group1 user1 passwd user1 groups 查看当前用户的用户组 finger和id命令可以查看用户信息
- linux 计算机概论 Linux介绍
CPU: CPU内部可以分为两个主要单元:算数逻辑单元和控制单元. 算数逻辑单元主要用于程序运算和逻辑判断,控制单元主要用于协调各个组件和各单元的工作. CPU基本可以分为两种: 精简指令集和复杂指令 ...
- Eclipse指定jdk启动
在eclipse.ini文件中加入这一句话: -vm D:/Java/jdk/jdk1.8/jre/bin/server/jvm.dll
- MySQL 关于索引的操作
-- 索引分类? 1.普通索引 2.唯一索引 3.全文索引 4.组合索引 普通索引:仅加速查询,最基本的索引,没有任何限制 唯一索引:加速查询 + 列值唯一(可以有null) 全文索引:仅适用于MyI ...
- 一例jsonp跨域访问
对于网站A,有一链接 '/auth/list',返回json数据 {, , , , , },{, , , , , }]} 网站b某页面下可以这样写jsonp get请求 <script> ...
- jsp页面判定某个变量值的时候改变颜色
<td> <c:if test="${v.price>'15' }"> <font color="yellow">${ ...
- java8 Date Localdatetime instant 相互转化(转) 及当天的最大/最小时间
Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Dat ...
- HDU 6041 - I Curse Myself | 2017 Multi-University Training Contest 1
和题解大致相同的思路 /* HDU 6041 - I Curse Myself [ 图论,找环,最大k和 ] | 2017 Multi-University Training Contest 1 题意 ...
- [人物存档]【AI少女】【捏脸数据】1222今日份的推荐
AISChaF_20191030183624290.png
- [Python之路] 使用epoll实现高并发HTTP服务器
什么是epoll 我们在 Python多种方式实现并发的Web Server 的最后使用单进程+单线程+非阻塞+长连接实现了一个可并发处理客户端连接的服务器.他的原理可以用以下的图来描述: 解释: ...