shell

以例子学习shell:

1、镜像版本发布脚本

 

(1、shell环境:

    #!指定shell脚本的解析器
(2、第一个shell脚本:
    vi build.sh
    chmod +x ./build.sh #使脚本具有执行权限
    ./build.sh #执行脚本
(3、变量:赋值与使用:
    直接赋值:your_name="wqd"
    语句赋值:for file in `ls /etc` # 将/etc 下目录的文件名循环出来。

    变量可以重复赋值。新的覆盖旧的

    使用变量: echo ${your_name}  #花括号帮助解释器识别变量边界。建议一直加养成好的习惯。

    只读变量: readonly your_name

    删除变量: unset your_name

(4、字符串:

    单引号:

        单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的

        单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

    双引号: 单引号不能的,他能。

    拼接字符串:

        greeting_1="hello, ${your_name} !"

    获取字符串长度:

         string="abcd"

         echo ${#string} #输出 4

(5、数组:

    array_name=(value0 value1 value2 value3)

    array_name[0]=value0

    length=${#array_name[*]}

(6、执行脚本的时候。可以像脚本内传递参数。

  脚本内接收参数的格式为:

  $0 表示执行的文件名

  $n 第n个参数。

  增加可执行权限:chmod +x build.sh 

 

【`】,学名叫“倒引号”, 如果被“倒引号”括起来, 表示里面需要执行的是命令。
比如 `dirname $0`, 就表示需要执行 dirname $0 这个命令

【“”】 , 被双引号括起来的内容, 里面 出现 $ (美元号: 表示取变量名) `(倒引号: 表示执行命令) \(转义号: 表示转义), 其余的才表示字符串。
【’‘】, 被单引号括起来的内容, 里面所有的都表示串, 包括上面所说的 三个特殊字符。

 

在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径的"."。
这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。

  

   



vi build.sh

#!/bin/bash

# 当前目录
cd `dirname $0`  
CDIR=`pwd`

git pull
#拉取分支内容

version="$1"  # 如果自定义版本号。将器传入进来。
if [ -z "$version" ]; then   #判断是否是自定义的版本号。不是的话。就日期使用当前系统日期。
version=`date +%Y%m%d%H%M%S`
fi

mvn clean install -Dmaven.test.skip=true #打包项目

docker build -t docker.demo.com/store/demo:1.0_$version .  #build 镜像
docker push docker.demo..com/store/demo:1.0_$version  #push镜像到仓库

posted @ 2017-01-04 18:22  三人行{必有我师}  阅读(171)  评论(0编辑  收藏  举报