测试开发进阶(四十)

测试开发进阶(四十)

运算

1
2
3
4
5
6
$ echo $((10 + 20))
# 30
$ one=25
$ two=12
$ echo $((one+two))
# 37

1

1
2
3
4
$ echo $((one>two))
# 1
$ echo $((one<two))
# 0

2

expr

1
2
3
4
$ echo $(expr $one+$two)
# 25+12
$ echo $(expr $one + $two)
# 37

3

比较大小需要转义

1
2
$ echo $(expr $one \> $two)
$ echo $(expr $one \< $two)

4

条件表达式

返回值

  • 条件成立,返回0
  • 条件不成立,返回1

逻辑表达式

  • &&
  • ||

文件表达式

  • -f判断输入内容是非为一个文件
  • -d判断输入内容是非为一个目录
  • -x判断输入内容是非可执行
  • -e判断文件是非存在

数值操作符

  • -eq相等
  • -gt大于
  • -lt小于
  • -ne不等于

字符串比较

  • ==
  • !=

进行判断

test[]效果一致

1
2
3
4
5
$ [ 1 = 2 ] && echo "条件不成立"
$ [ 1 = 2 ] || echo "条件不成立"

$ test 1 = 2 && echo "条件不成立"
$ test 1 = 2 || echo "条件不成立"

5

6

查看使用方法

1
2
$ man [ ]
$ man test

Shell脚本

格式要求

  • 在文件首行指定执行shell的程序

7

1
2
#!/bin/bash
#Author:zhongxin
  • 后缀建议为.sh
  • 执行失败时,使用exit返回非零值,来退出程序
  • 默认锁进4个空格

执行脚本

1
2
3
4
5
6
7
# 第一种方式
$ bash 1126.sh
# 第二种方式
$ chmod +x 1126.sh
$ ./1126.sh
# 第三种方式
$ source 1126.sh

注释

  • 单行注释:#
  • 多行注释
1
2
3
4
5
6
7
8
#!/bin/bash
#Author:zhongxin

:<<!
要注释的内容
!

pwd

8

函数

格式一

1
2
3
4
5
6
#!/bin/bash

函数名()
{
...
}

格式二

1
2
3
4
5
6
#!/bin/bash

function 函数名
{
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
#Author:zhongxin

:<<!
要注释的内容
!

hello()
{
echo "Hello,Shell"
}

hello

function greet
{
echo "Hello,zx"
}
greet

9

入参

1
2
3
4
5
6
7
function greet
{
echo "Hello,$1"
echo "Hello,$2"
echo "Hello,$3"
}
greet 'a' 'b' 'c'

10

接收命令行传参

1
greet $1 $2 $3

11

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#Author:zhongxin

read -p "请输入你的姓名:" name
read -p "请输入你的年龄:" age
read -p "请输入你的爱好:"
function info
{
# -e 运行\n换行
echo -e "你的姓名为:${name}\n你的年龄为:${age}\n你的爱好为:${REPLY}"
}
info

12

流程控制

if

1
2
3
4
5
6
7
8
9
if [ 条件1 ]
then
指令1
elif [ 条件2 ]
then
指令2
else
指令2
fi

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
#Author:zhongxin

read -p "输入你的年龄:"

if [ ${REPLY} -ge 70 ]
then
echo "好好养生"
elif [ ${REPLY} -ge 18 ]
then
echo "好好工作"
else
echo "好好学习"
fi

13

for

方式一
1
2
3
4
for 值 in 列表
do
执行语句
done

例子

1
2
3
4
5
6
dirs=$(ls /)
for i in ${dirs}
do
index=$((${index} + 1))
echo "${index}.${i}"
done

15

方式二
1
2
3
4
5
max=10
for ((i=1;i<=max;i++))
do
执行语句
done

例子

1
2
3
4
5
6
7
8
#!/bin/bash
#Author:zhongxin

max=10
for ((i=0;i<=max;i++))
do
echo "i=${i}"
done

14

 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
您的支持将鼓励我继续创作!