![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bash
炼气散人
等儿子高考后,或许会回来
展开
-
bash 脚本编程八 匹配命令输出
当输入java -version的时候,如果安装了jdk,会输出类似下面的信息:$ java -versionjava version "1.6.0_34"Java(TM) SE Runtime Environment (build 1.6.0_34-b04)Java HotSpot(TM) 64-Bit Server VM (build 20.9-b04, mixed mode)可以用ex原创 2012-09-14 15:08:16 · 3288 阅读 · 0 评论 -
bash 脚本编程十九 Nginx自动部署
自动化部署达到以下几个目的:1.编译2.安装3.生成HTTPS 证书4.配置5.设置Ubuntu 服务首先将Nginx的压缩包解压并放在工程目录下,然后将要准备的的配置文件放在conf目录下,还有作为service需要的启动脚本文件nginx目录结构如下:# tree -L 2tree -L 2.├── conf│ ├── agol.conf│ └── nginx.conf├─原创 2012-09-20 11:27:35 · 3666 阅读 · 0 评论 -
bash 脚本编程二十一 MongoDB自动部署
这是单机版本的自动部署,手动部署可以参考我的另一篇文章:http://blog.csdn.net/sheismylife/article/details/6737127首先下载mongodb-linux-x86_64-2.2.0.tgz, 解压后放到工程目录mongodb下。然后准备启动脚本mongodb:#!/bin/sh ### BEGIN INIT INFO# Provides:原创 2012-09-23 11:52:53 · 4146 阅读 · 0 评论 -
Java 程序的自动安装
我用过Java service wrapper,很好。不过我也能自己制作脚本完成基本功能。肯定没有Java service wrapper功能全面,不过够用了,而且完全掌控。目标:1.从Maven项目中产生安装包2.将安装包安装成Ubuntu service。我的Java程序是用来发送email的,通过读取MongoDB的email内容,发送信息。同时还依赖一个config.xml文件作为启动参数原创 2012-10-28 18:18:50 · 4573 阅读 · 0 评论 -
bash 脚本编程二十 GlassFishV3自动部署
我的手动安装版本请参考:http://blog.csdn.net/sheismylife/article/details/76495711.先下载最新版本的glassfish, 网址:http://glassfish.java.net/downloads/3.1.2.2-final.html解压后放到工程目录下。然后根据自己的需要修改glassfish/domains/domain1/config原创 2012-09-20 15:13:00 · 2763 阅读 · 1 评论 -
bash 脚本编程五 条件语句
结合前面的例子,来写一个条件表达式。如果第一个参数没有,则输出no parameter,否则输出第一个参数。#!/bin/bashif [ -n "$1" ]then echo "1st parameter: $1"else echo "no parameter"fi输入带参数命令:$ ./test.sh 'this is a test'1st parameter: t原创 2012-09-13 14:35:18 · 3869 阅读 · 0 评论 -
bash 脚本编程二 单双引号
简单来说,双引号不会阻止变量取值符号的作用,所以me="ok f"echo "$me"输出结果是:ok f而改用单引号后,会将$符作为普通字符显示,不再求值:me="ok f"echo '$me'输出结果是:$me如果使用转义符号\,在双引号里面也能达到单引号的效果:me="ok f"echo "\$me"输出结果也是:$me原创 2012-09-12 17:14:35 · 2066 阅读 · 0 评论 -
bash 脚本编程三 变量组成命令与大括号
在sh脚本文件中,我们可以直接运行Linux命令,比如:#!/bin/bashmkdir ~/xtouch ~/x/mls ~/x -alh输出结果是:$ ./test.shtotal 8.0Kdrwxrwxr-x 2 chenshu chenshu 4.0K Sep 13 10:49 .drwxr-xr-x 64 chenshu chenshu 4.0K Sep 13 10:49原创 2012-09-13 11:00:10 · 3980 阅读 · 0 评论 -
bash 脚本编程四 外部参数 IFS
通过$0可以获取传递来的第一个参数,就是脚本自己,$1可以获得第二个参数,比如:#!/bin/bashecho "$0"echo "$1"运行程序./test/sh q看到:$ ./test.sh q./test.shq传递参数的时候,如果是字符串,可以用单引号或者双引号包起来,表示这是一个完整的参数:./test.sh 'this is a test'既然扯到双引号,要注意,如果在双引原创 2012-09-13 14:05:59 · 4918 阅读 · 0 评论 -
bash 脚本编程一 文件头,注释 和 变量
必须在脚本文件开头写下:#!/bin/bash意思是这是一个bash shell脚本,而不是其他流行的脚本文件。调用一个基本的Linux命令,echo "hello,world"保存为test.sh文件,打开执行权限:sudo chmod +x ./test.sh运行吧:./test.sh看到了hello,world.添加一个注释吧,用#开头(pound sign)的所有字符都是注释,除了第一行以原创 2012-09-12 16:56:45 · 16228 阅读 · 0 评论 -
bash 脚本编程十八 Keepalived自动部署
紧接前面手工部署Keepalived的文章,这次来自动部署。建立keepalived目录,里面已经存放了下载并解压的keepalived-1.2.7目录,包括和用于作为系统服务的keepalived脚本注意,是前面一文修改过后能用于ubuntu的版本。install.sh脚本内容:#!/bin/bash source ../common/tool.shlibssl="libssl-dev"原创 2012-09-19 14:33:10 · 3751 阅读 · 0 评论 -
bash 脚本编程十七 NFS client自动部署
1.自动检测并安装nfs-common,2.自动创建目录并mount3.同时检查/etc/fstab文件中是否有配置,没有则加入。确保下次开机能自动mount。install.sh脚本:#!/bin/bash source ../../common/tool.shnfsClient="nfs-common"nfsServerFolder=10.112.18.158:/opt/share原创 2012-09-19 11:04:05 · 3218 阅读 · 0 评论 -
bash 脚本编程十四 maven自动部署
和Java自动部署的思路一样,通过在/usr/bin下建立mvn链接,指向/etc/alternatives/mvn链接,/etc/alternatives/mvn指向/usr/mvn3链接,/usr/mvn3链接指向/usr/apache-maven-3.0.4目录。由于maven运行是要检查JAVA_HOME环境变量,而JAVA_HOME环境变量的设置可以放在安装Java的脚本中执行。现在看一原创 2012-09-17 10:57:22 · 3175 阅读 · 0 评论 -
bash 脚本编程九 函数
将前面的检查java代码封装为函数,然后再调用之,脚本修改如下:#!/bin/bash #check java is available in this sessionfunction hasJava { v=`java -version 2>&1` echo 'check java platform...' pos=`expr match "$v" 'java'原创 2012-09-14 15:15:01 · 2699 阅读 · 0 评论 -
bash 脚本编程十 将函数放在库文件
现在将检查java的函数放在另一个文件check.sh中#!/bin/bash #check java is available in this sessionfunction hasJava { v=`java -version 2>&1` echo 'check java platform...' pos=`expr match "$v" 'java'`原创 2012-09-14 15:47:14 · 2785 阅读 · 0 评论 -
bash 脚本编程七 将命令输出保存到变量中
`符号包含的命令执行完后,可以讲其输出结果保存到变量中#!/bin/bash v=`java -version`echo $v执行结果:$ ./install.shjava version "1.6.0_34"Java(TM) SE Runtime Environment (build 1.6.0_34-b04)Java HotSpot(TM) 64-Bit Server VM (b原创 2012-09-14 13:11:27 · 25533 阅读 · 4 评论 -
bash 脚本编程六 循环,遍历目录
现在看看循环的写法:for v in ...do ...done写个简单的例子看一下:#!/bin/bashfor v in man woman childdo echo $vdone输出结果为:$ ./test.shmanwomanchildfor in的写法和很多现代语言相近。就是...可以用 空格隔开的若干个值表示再进一步,打开一个目录,遍历其中的文件(不递归)#!原创 2012-09-13 15:38:31 · 9217 阅读 · 1 评论 -
bash 脚本编程十二 环境变量的设置
在前面自动部署了JDK后,为了方便一些基于Java的程序,需要设置环境变量JAVA_HOME下面这段代码:if [ "$JAVA_HOME" = "/usr/jdk1.6" ]then echo "JAVA_HOME is correct: $JAVA_HOME"else echo "JAVA_HOME is wrong: $JAVA_HOME" h=`grep 'J原创 2012-09-15 14:35:02 · 2817 阅读 · 0 评论 -
bash 脚本编程十三 环境变量的设置函数
可以将前面的环境变量设置代码封装成函数,以后可以反复使用:# $1 variable name# $2 expected value# put this into /etc/environment if not foundfunction setEnv { source /etc/environment if [ "${!1}" = "$2" ] then echo原创 2012-09-15 15:10:57 · 2595 阅读 · 0 评论 -
bash 脚本编程十一 JDK自动部署
现在演示如何用bash脚本自动化部署JDK。环境:Ubuntu12.04 amd 64 Desktop or Server, 必须是Bash shell复制目录java到目标机器,用root权限执行install.sh脚本即可。看一下目录结构:.├── check.sh├── install.sh├── jdk1.6.0_35├── readme└── tool.sh要执行的就是inst原创 2012-09-15 11:24:00 · 3773 阅读 · 0 评论 -
bash 脚本编程十五 MySQL自动部署
现在来考虑MySQL在Ubuntu上的自动部署,有几个问题需要解决:第一,检查是否安装过了MySQL第二,安装过程中避免交互式输入root密码在tool.sh中添加函数检查dpkg包。#$1 means the full name of dpkg#return 1 if dpkg is installed (found 'ii dpkg-name' in the returned string)原创 2012-09-17 13:34:06 · 3465 阅读 · 0 评论 -
bash 脚本编程十六 NFS server自动部署
现在创建nfs/server目录,这个脚本要自动安装并配置nfs server。install.sh脚本:#!/bin/bash source ../../common/tool.shnfs="nfs-kernel-server"hasDpkg $nfsr=$?if [ $r -eq 1 ]then echo "$nfs was installed"else原创 2012-09-17 15:43:51 · 2906 阅读 · 0 评论 -
bash获取当前目录路径
启动bash文件一般有两种方式1. 进入目录,用./a.sh方式启动2. 直接用绝对路径启动,/home/dean/a.sh下面的脚本能兼顾两种方式,都能获得当前路径#!/bin/bashecho $(dirname $0)结果是:第一种方式~ $ ./a.sh.第二种方式~ $ /home/dean/a.sh/home/dean说明dirname是负责将路径的最后一部分去掉,更多的用法变原创 2016-10-29 17:37:07 · 10656 阅读 · 0 评论