jenkins⾃动化构建流程篇章三:shell脚本的语法和调⽤⽬录
1、博客介绍
本篇是jenkins⾃动化流程的第三篇,shell脚本的语法,本篇会简单介绍⼀下shell的⼀些简单⽤法,⼤部分都是摘⾃菜鸟教程,本篇做记录⽤,有兴趣的同学可以直接跳转菜鸟教程
篇章⼀ :在linux上部署jenkins环境
篇章⼆ :jenkins任务的创建
篇章三 :shell脚本的语法和调⽤
篇章四 :实战,利⽤jenkins构建⼀个python处理图⽚的流程
2、内容
我们在上⼀篇的任务创建中已经介绍了,shell是怎么被调⽤的,这⾥我们简单在介绍⼀下shell的⼀些语法。
变量
-- 定义变量
test_str="111"    (echo 为输⼊语句)
输出1:echo test_str            --结果 test_str
输出2:echo $test_str            --结果 111
python菜鸟教程100
输出3:echo ${test_str}          -- 结果 111
readonly test_str              -- readonly 可以将变量变成只读变量不能被修改
unset test_str                  -- unset 删除变量删除后不能被使⽤不能删除只读变量
注:变量的声明,等号前后不能有空格
-- 定义数组(数组只⽀持⼀维数组)
# list=(12 234 3 4 5)  # 数组创建括弧()
# list[6]=7            # 数组的⼿动赋值
# echo ${list[5]}      # 数组的调⽤必须加{}
# echo ${list[@]}      # 可以使⽤@获取数组中所有元素
# echo ${#list[@]}      # 获取数组长度
# echo ${#list[*]}      # 获取数组长度
# echo ${#list[n]}      # 获取数组长度
-- 获取执⾏脚本时的参数
# 可以在执⾏shell脚本的时候为其传参数  sh test.sh 1 2 3
# echo "Shell 传递参数实例!";
# echo "执⾏的⽂件名:$0";  # 输出执⾏⽂件的名字 $0 # echo "第⼀个参数为:$1";  # 输出第⼀个参数 $1
# echo "第⼆个参数为:$2";  # 输出第⼆个参数 $2
# echo "第三个参数为:$3";  # 输出第三个参数 $3
# echo "$#";    # 输出总参数的个数 $#
$#传递到脚本的参数个数
$*以⼀个单字符串显⽰所有向脚本传递的参数。
如"$*"⽤「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$脚本运⾏的当前进程ID号
$!后台运⾏的最后⼀个进程的ID号
$@与$*相同,但是使⽤时加引号,并在引号中返回每个参数。
如"$@"⽤「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-显⽰Shell使⽤的当前选项,与功能相同。
$?显⽰最后命令的退出状态。0表⽰没有错误,其他任何值表明有错误。
运算符
-- 算数运算符
#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
# 输出结果:两数之和为 : 4
运算符说明举例
+加法`expr $a + $b` 结果为 30。
-减法`expr $a - $b` 结果为 -10。
*乘法`expr $a \* $b` 结果为  200。
/
除法`expr $b / $a` 结果为 2。
%取余`expr $b % $a` 结果为 0。
=赋值a=$b 将把变量 b 的值赋给 a。
==相等。⽤于⽐较两个数字,相同则返回 true。[ $a == $b ] 返回 false。
!=不相等。⽤于⽐较两个数字,不相同则返回 true。[ $a != $b ] 返回 true。
-- 关系运算符
a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
输出结果:10 -eq 20: a 不等于 b
运算符说明举例
-eq检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 false。-ne检测两个数是否不相等,不相等返回 true。[ $a -ne $b ] 返回 true。-gt检测左边的数是否⼤于右边的,如果是,则返回 true。[ $a -gt $b ] 返回 false。-lt检测左边的数是否⼩于右边的,如果是,则返回 true。[ $a -lt $b ] 返回 true。-ge检测左边的数是否⼤于等于右边的,如果是,则返回 true。[ $a -ge $b ] 返回 false。-le检测左边的数是否⼩于等于右边的,如果是,则返回 true。[ $a -le $b ] 返回 true。
-- 布尔运算符
a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a == $b: a 等于 b"
fi
输出结果:10 != 20 : a 不等于 b
运算符说明举例
!⾮运算,表达式为 true 则返回 false,否则返回 true。[ ! false ] 返回 true。
-o或运算,有⼀个表达式为 true 则返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true。-a与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false。
-- 逻辑运算符
a=10
b=20
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
输出:返回 false
运算符说明举例
&&逻辑的 AND[[ $a -lt 100 && $b -gt 100 ]] 返回 false
||逻辑的 OR[[ $a -lt 100 || $b -gt 100 ]] 返回 true
-- 字符串运算符
a="abc"
b="efg"
if [ $a = $b ]
then
echo "$a = $b : a 等于 b"
else
echo "$a = $b: a 不等于 b"
fi
输出:abc = efg: a 不等于 b
运算符说明举例
=检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。!=检测两个字符串是否不相等,不相等返回 true。[ $a != $b ] 返回 true。-z检测字符串长度是否为0,为0返回 true。[ -z $a ] 返回 false。
-n检测字符串长度是否不为 0,不为 0 返回 true。[ -n "$a" ] 返回 true。$检测字符串是否为空,不为空返回 true。[ $a ] 返回 true。
-- ⽂件测试运算符
file="/var/www/runoob/test.sh"
if [ -r $file ]
then
echo "⽂件可读"
else
echo "⽂件不可读"
fi
输出:⽂件可读
操作符说明举例
-b file检测⽂件是否是块设备⽂件,如果是,则返回 true。[ -b $file ] 返回 false。-c file检测⽂件是否是字符设备⽂件,如果是,则返回 true。[ -c $file ] 返回 false。-d file检测⽂件是否是⽬录,如果是,则返回 true。[ -d $file ] 返回 false。-f file检测⽂件是否是普通⽂件(既不是⽬录,也不是设备⽂件),如果是,则返回 true。[ -f $file ] 返回 true。-g file检测⽂件是否设置了 SGID 位,如果是,则返回 true。[ -g $file ] 返回 false。-k file检测⽂件是否设置了粘着位(Sticky Bit),如果是,则返回 true。[ -k $file ] 返回 false。-p file检测⽂件是否是有名管道,如果是,则返回 true。[ -p $file ] 返回 false。-u file检测⽂件是否设置了 SUID 位,如果是,则返回 true。[ -u $file ] 返回 false。-r file检测⽂件是否可读,如果是,则返回 true。[ -r $file ] 返回 true。-w file检测⽂件是否可写,如果是,则返回 true。[ -w $file ] 返回 true。-x file检测⽂件是否可执⾏,如果是,则返回 true。[ -x $file ] 返回 true。-s file检测⽂件是否为空(⽂件⼤⼩是否⼤于0),不为空返回 true。[ -s $file ] 返回 true。-e file检测⽂件(包括⽬录)是否存在,如果是,则返回 true。[ -e $file ] 返回 true。
输出语句
>>>>>>> echo命令
# echo "It is a test"        显⽰普通字符串
# echo "\"It is a test\""    显⽰转义字符
# echo "$name It is a test"  显⽰变量
>>>>>>> printf命令
# printf "%-10s %-8s %-4s\n" 姓名性别体重kg
# printf "%-10s %-8s %-4.2f\n" 郭靖男 66.1234
# printf "%-10s %-8s %-4.2f\n" 杨过男 48.6543
# printf "%-10s %-8s %-4.2f\n" 郭芙⼥ 47.9876
test命令

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论