#!/bin/bash
for i in 1 2 3; do
  echo 'Execute 3 times'
  echo $i
  pybot --nostatusrc --outputdir /root/.jenkins/workspace/User/report/ --include usertest /root/.jenkins/workspace/User-200
  sleep 5s
done

1.shell格式:例

  shell脚本开发习惯

      1.指定解释器 #!/bin/bash

      2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail:邮箱,#function(功能),#Version:版本

      3.脚本注释(用英文注释 中文可能乱码。)

      4.脚本以.sh结尾 不是必须的

      5.成对的符号,一次性写全,退格补内容。特殊符号[ xxxx ] 中括号中间内容两边都有空格。

      6 .代码有条理性(通过缩进)。

2.执行:1.sh xxx.sh (-x)执行并显示执行过程。

        sh xx.sh(不需要root权限)。全路径执行需要x权限。(chmod a+x xx.sh)当前路径下用点执行(. xx.sh )或者source  xxx.sh (重点)

注意:两个 脚本 ,当一个脚本需要调用前一个脚本里面的内容时候 。需要source  或者点 “.” 来执行加载才可调用。Sh .xxsh  bash  xxx 只可执行 不可加载。  

3.环境变量全局配置地点:常见的:/etc/profile , /etc/basrc , /etc/profile.d/xxx.sh ,

      用户的环境变量~/.bash_profile  ~./bash_bashrc

      设置环境变量用:export 变量名(大写)=xxx变量值。

      如登录时候提示信息可在 vi /etc/motd 编辑改文件自定义提示信息。也可在/profile.d/xx.sh 内如可写echo “xxx自定义提示信息”。即可加入x执行权限。注意:定时任务。环境变量需要重新定义。

     (1). 显示环境变量输出: echo $XXX , set ,env 显示比较全面。

     (2)取消变量 unset 命令行临时取消。

     (3)jobs 将查当前后台执行程序。

     (4) ctrl+z 暂停, fg 调至前台运行,bg将程序调至后台执行。

     (5)清空日志:cat /dev/null >test.log   unll

4.shell特殊符号总结

‘’单引号 照原输出。

“” 自动识别变量执行,遇到命令需要加反引号。=不加引号(设置变量里面)

.*表示任意字符

.  表示任意一个字符。

*  表示任意0个或多个字符。(包括+和?)

+ 表示1个或多个+前面的字符

? 表示0个或1个字符。

#  注释符号。#后面的内容可以忽略

\ 脱意字符。

| 管道符号 将符号前面执行的结果作为符号后面的命令。如cat test.txt |wc -l 计算文档行数。

$变量前面表示符号。还有一个妙用即和!结合起来使用。!$ 表示上一条命令中最后一个变量 如:上一次touch 1.txt 。Vi !$ 其中!$表示为1.txt、

~表示root家目录。

& 如果把一条命令放到后台执行的话,则需要加上这个符号, 通常用作一个命令运作时间非常长的情况。如。Sleep  200 & 后台执行。Jobs 查看 bg 调用到前天 fg调用到后台。

 >>追加重定向。   >(重定向)   2>>错误追加重定向。2>重定向。

<  如:wc -l <1.txt

[  ]  中括号 中间字符组合,代表中间字符中的任意一个。Ls [1-3].txt

{ } 表示序列 序列 如:touch wyl{1..3}.txt 也有表示变量的意义如:  Echo “${a}abc” 告诉它a是变量。

^以什么开头。

$以什么结尾。

^$表示空行。

&&  左边命令执行成功后,在执行下一个命令

||  左边的命令没有执行成功后,才会执行后面的命令。

;常常把两条命令写在一行中间用;隔开。有或的意思。如:command1:command2

#!/bin/bash
IMG_NAME=$(echo ${gitlabSourceRepoHttpUrl} | grep -Eo "[^/]*$" | sed 's/.git$//')
IMG_NAME_LOWER=$(echo $IMG_NAME | tr "A-Z" "a-z")
git clone ${gitlabSourceRepoHttpUrl}
cd ${IMG_NAME}
#git checkout -b ${gitlabSourceBranch}
CID=$(git rev-parse HEAD)
SHORT_CID=$(echo $CID | cut -c 1-8)
TIMESTAMP=$(date +%Y%m%d%H%M%S)
IMG_TAG=${TIMESTAMP}-${SHORT_CID}

#build
mvn clean package -DskipTests

#build docker image
docker build -t 192.168.1.202/dev/${IMG_NAME_LOWER}:${IMG_TAG} .

#push to harbor/test...
docker login 192.168.1.202 --username admin --password Harbor12345
docker tag 192.168.1.202/dev/${IMG_NAME_LOWER}:${IMG_TAG} 192.168.1.202/dev/${IMG_NAME_LOWER}:latest
docker push 192.168.1.202/dev/${IMG_NAME_LOWER}:${IMG_TAG}
docker push 192.168.1.202/dev/${IMG_NAME_LOWER}:latest

/usr/local/bin/docker-starter dev ${IMG_NAME_LOWER} ${IMG_TAG}