1.2、shell编程

第一阶段 Shell概述

linux 中的所有的命令基本上是shell的程序

  • Shell 是一个用C语言编写的程序,它是用户使用 Linux 的桥梁。

  • Shell 既是一种命令语言,又是一种程序设计语言。

  • Shell 是指一种应用程序(不是系统程序),这个应用程序提供了一个界面,用户通过这个界面访问操作系统

一、Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 脚本中常用到较多的Linux命令,简称shell脚本

二、Shell 环境 (开发shell脚本需要什么)

Shell 编程只要有一个能编写代码的文本编辑器vi和一个能解释执行的脚本解释器就可以了。/bin/bash 推荐使用,标准解释器

Linux 的 Shell 种类众多,常见的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash) 推荐使用,标准解释器
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)
  • Bourne Again Shell

1、/bin/bash的优点

(1)、由于易用和免费,Bash 在日常工作中被广泛使用。

(2)、Bash 也是大多数Linux 系统默认的 Shell。

三、Shell是做什么的?

将许多命令写在一起,让用户很轻松的就能执行一个文件的Shell脚本,就能够一次执行多个命令

四、shell脚本

1、Shell脚本格式

<1> 使用vi来编写shell脚本。

<2> 脚本第一行格式: #!/bin/bash 符号#!用来指定该脚本文件的解析程序,这里使用的是bin目录下的bash解析器.

<3> chmod +x filename.sh 授予所有用户对filename.sh 可执行的权限

Shell 脚本的编写

eg:#!/bin/bash

​ echo “hello world!” 编写完成之后,按esc退出编辑模式,使用:wq!保存并退出

2、执行Shell脚本的命令

例如:Shell脚本名为hello.sh

<1>执行方法1: ./hello.sh

<2>执行方法2: /bin/bash hello.sh这种方法不需要执行权限

3、 Shell变量 百度:自定义变量在哪里存储?系统默认变量在哪里存储?

变量名=变量值

变量值一般存在数值,布尔,字符串等类型的内容

3.1变量名的命名须遵循的规则:

<1>首个字符必须为字母(a-z,A-Z)。

<2>中间不能有空格,可以使用下划线(_)。

<3>不能使用标点符号。

<4>不能使用bash里的关键字(if, fi, then等)

3.2、用户自定义变量

使用一个定义过的变量,只要在变量名前面加美元符号$即可。

height=170

name=“瑞瑞”

is_passed=false false 假, true 真

变量访问时,使用$变量名, 或 ${变量名}

其中,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界

【扩展】命令行的参数变量, $1 表示是命令行执行脚本时,在文件名后输入的数据,
./s1.sh 100

4、Shell 注释

以"#"开头的行就是注释,会被解释器忽略。 sh里没有多行注释,只能每一行加一个#号。

5、Shell 基本运算符

算数运算符 、关系运算符、布尔运算符 、字符串运算符 、文件测试运算符

数学运算的这种写法: $(()) ,对括号内的表达式求值,这样声明了一个整型数数据.

5.1算数运算符

格式:$(()),两组小括号的作用:计算表达式的结果

假定变量 a 为 10,变量 b 为 20 $((a+b))计算a+b的值

运算符<+、-、*、/(取整)、%(取余)、==、!=>

$a + b 、 b 、 ba - b 、 b 、 ba * b 、 b 、 bb / a 、 a 、 ab % a 、 a = a 、a= aa=b 、 ( ( a = = b ) ) 、 (( a == b ))、 ((a==b))(( a != b ))

5.2关系运算符(判断用比较合适)

格式:[ 操作数1 -gt 操作数2 ]返回结果是true,false

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

运算符

-eq(相等):[ $a -eq $b ]、-ne(不相等)、-gt (大于)、-lt(小于)、-ge(大于等于)、-le(小于等于)

5.3布尔(逻辑)运算符:多个关系运算的布尔结果

格式:[ 布尔值或关系表达式1 -o 布尔值或关系表达式2 ]

运算符

-a(与就是且)、-o(或)、!(非就是取反)

5.4字符串运算符(-z和-n需要确认)
运算符

=(相等)、!=(不相等)、-z(长度不为0真)、-n(长度为0真)、str(不为空真)、name=“”(空字符串)

5.5文件测试运算符

格式:[ -d 文件名或目录名 ]

运算符

-d(目录)、-f(文件)、-r(可读)、-w(可写)、-x(可执行)、-s(文件大小大于0)、-e(文件或目录存在)

6、test测试: 针对 数值,字符串和文件的

Shell中的 test 命令用于检查某个条件是否成立。

if test -e filename ;then

fi

7、if-then-fi
7.1 if 语句 语法格式:

if [判断条件] ;then
输出结果1
输出结果2

fi

7.2 if else-if else 语法格式

if [条件1] ;then
输出结果1
elif [条件2 ] ;then
输出结果2
else
其他输出结果
fi

8、循环(while…do…done)

<1>while ((判断的条件)) ;do
程序段
done

<2> while((1));do

​ if [ 条件表达式 ]; then

​ break

​ fi

​ done

8.1 输出1到5之间的数字

#!/bin/sh

n=1 (定义以一个int变量,初始值为1)

while(( $n<=5 )) ;do

​ echo $n

​ let “n++” (重复要做的程序段)

done

let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量

8.2 跳出循环

break命令 :允许跳出所有循环(终止执行后面的所有循环)。

continue命令与break命令类似,它不会跳出所有循环,仅仅跳出当前循环。

跳出循环

9、循环(for…do…done)

基本结构:
for (( 初始值; 条件; 运算语句 )) ;do

​ 程序段

done

eg:使用for循环打印出1到10之间的数

#!/bin/sh

for((i=1;i<=10;i++));do

​ echo $i;

done;
注:初始值只执行一次,条件每次都会执行程序段执行后执行运算语句

10、for-in循环

for 变量名 in 数组对象
do
程序段
done

11、数组

定义数组 数组名=(元素1 元素2 … 元素n)

访问数组, 基于索引下标,下标是从0开始

数组名[下标]=元素值

echo ${数组名[下标]} 显示指定下标的元素

echo ${数组名[@]} 显示数组的所有元素

迭代数组

for n in ${数组名[@]};do

​ echo $n

done

数据的长度 ${#数组名[@]}

12、命令行中的所有参数

$*, $@ 所有参数

$# 参数的个数

你可能感兴趣的:(软件测试,linux,bash,运维)