shell 脚本编写 - 测试开发

什么时候使用shell?

1、Shell 适用于开发小工具和包装脚本

2、充当浇水语言的角色,仅仅调用其他程序,或是极少的数据处理

3、如果需要使用hash、嵌套array,建议用其他编程语言实现

4、对性能要求较高的场景,建议用其他语言实现

变量

定义变量

# a 和 1 中间不要留有空格,例如:不能写成 a = 1
a=1
echo $a

引用变量

a=1
​
# 写法一:
echo $a
​
# 写法二(推荐):
echo ${a}
​
# 用${}的好处是字符串可以拼接
echo ${a}b  # => 输出 1b

引号

# 尽量使用双引号,双引号可以输出变量和转义,但是单引号完全是字面量
a=1
echo "${a}" # => 输出 1
echo '${a}' # => 输出 ${a}

环境变量

# 环境变量没有要求必须大写,但是建议写成大写
​
export A=1
# 或
declare -x B=2
​
# 也可以把普通变量导出为环境变量
C=3
export C

定义常量

# 常量一般写在文件开头
readonly CONST1
# 或
declare -r CONST2

默认全局变量

# 查看当前所在的目录
$PWD
​
# 上一次所在的目录
$OLDPWD
​
# PATH 环境变量
$PATH

特殊变量

# 脚本名称
$0
​
# 脚本参数,$1是第一个参数...
$1
$2
$3
​
# 参数个数
$#
​
# 上一个命令的结果,0是正常结束,非0是有异常
$?

基本语法

条件判断

shell 的判断可以用 [],也可以用 [[]],但建议用[[]]

if [[ $1 -eq "1" ]];then
    echo "ok"
elif [[ $1 -eq "2" ]];then
    echo "2333"
else
    echo "no"

判断可分为数字比较、字符串比较和文件判断

数字比较

判断相等:===-eq (建议用==或者-eq,语义比较明确)

判断不等:!=-ne

判断大于:>(需要双括号 (()))、-gt[[]]即可)

判断小于:<(需要双括号)、-lt[[]]即可)

nb=4
​
(( $nb > 4 )) && echo "yes" || echo "no"
# 或
[[ $nb -gt 4 ]] && echo "yes" || echo "no"

判断大于等于:-ge

判断小于等于:-le

字符串判断

判断相等:===-eq

判断不等:!=-ne

判断大于:>(需要双括号 (()))、-gt[[]]即可)

判断小于:<(需要双括号)、-lt[[]]即可)

判断大于等于:-ge

判断小于等于:-le

判断字符串不为null(判断长度不为0):-n

判断字符串为null(判断长度为0):-z

str="" 
# 未定义和长度为零的字符串都算空字符串
[[ -z $str ]] && echo "yes" || echo "not" # 输出 yes
[[ -n $str ]] && echo "yes" || echo "not" # 输出 not

文件判断

判断是否存在(不限制类型):-e

判断文件是否存在:-f

判断文件夹是否存在:-d

逻辑运算符

取反:!

或:||

与:&&

a=1
[[ ! $a == 1 || 1=1 ]] && echo "yes" || echo "no" # 输出 => yes
[[ ! $a == 1 && 1=1 ]] && echo "yes" || echo "no" # 输出 => no

case语句

# | 相当于 or,
# ;; 相当于break,必须有
# *) 相当于 default
​
case $1 in
 s|start)
        echo "start"
        ;;
 stop)
        echo "stop"
        ;;
 restart)
        echo "restart"
        ;;
 *)
        echo "Usage:[start|stop|reload]"
        exit 1
        ;;
esac
exit 0

循环

for 循环

# 写法一
# 输出当前文件夹下的所有文件
for f in `ls`;do
    echo $f
done
​
# 写法二
# 输出1-100的奇数
for i in {1..100..2};do
    echo $i
done
​
# 写法三
# 计算从1加到100
sum=0
for(( i=1;i<100;i++ ));do
        echo $(( sum+=i ))
done

while 循环

nb=0
while [[ $nb -lt 10 ]];do
    echo $(( nb+=1  ))
done

函数

注意:函数的返回值只能是数字

# 函数定义
function foo() {
    echo 'output'
}
​
# 函数调用
foo
​
# 函数参数
function sum(){
    echo $1
    echo $2
    res=$1+$2
    if [[ $res==3 ]];then
        return 0
    else:
        return -1
    fi
}
​
# 接收函数返回值用 $? ,函数的返回值只能是数字!
sum 1 2
echo $?  # 输出 => 0

shell错误处理

set -e:报错时退出

set -u:检测未定义变量

set -x:调试执行,输出shell脚本的原始内容,编写jenkins的脚本常用

set -x
echo "hello world"
​
# 输出:
# + echo "hello world"  # +号 后面是源文件内容 输出格式由 PS4 的环境变量决定
# hello world

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

  全套资料获取方式:点击下方小卡片自行领取即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值