#!/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}