首页 > 系统相关 >软件测试学习笔记丨Linux-Bash编程语法

软件测试学习笔记丨Linux-Bash编程语法

时间:2024-09-05 14:55:38浏览次数:12  
标签:do arr 变量 打印输出 echo Linux Bash 软件测试

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32091

一、Bash编程基础

1.1 变量

1.1.1 语法

Variable_name=value

1.1.2 变量定义的规则

  • 变量名区分大小写,a和A为两个不同的变量;
  • 变量名可以使用大小写字母混编的形式进行编写;
  • 变量名与值之间的=两侧都不能有空格;
  • 在读取或打印变量时,需使用$+变量名;
  • 变量可以写在Bash脚本中的任何地方,在运行时,Bash会自动将其替换成变量值。

1.1.3 Bash数据类型

  • 在Bash中声明变量后赋值,它会自动判断数据类型,不必在声明的同时去定义变量的数据类型。

1.1.4 Bash变量的类型

  • 系统定义的变量:
  • 通常是以大写字母形式存在,如BASH、SHELL等。
  • 用户定义的变量:
  • 多数以小写字母参与命名,但不具有大小写强制性规定。

1.1.5 Bash变量的定义与使用

letter_name="abc"
echo $letter_name

1.1.6 只读变量

a="123"
readonly a

1.1.7 删除变量

unset Variable_name

1.1.8 字符串的拼接

基本语法:str3="${str1}${str2}"

1.2 引号

  • 输入的内容为简单的字符串,或者文本时,单引号和双引号的作用没有任何区别。
  • 输出一个已定义的变量,则需要使用双引号。

1.3 数组

  • 数组可以定义为相似类型元素的集合。
  • 在Bash中,数组不必是相似类型元素的集合。

1.3.1 索引数组的声明和赋值

declare -a Array_Name # 索引数组
Array_Name[index_1]=value_1
Array_Name[index_2]=value_2

Array_Name=(
    [index_1]=value_1
    [index_2]=value_2
    )

1.3.2 数组的访问

declare -a arr1=( hello world )
declare -A arr2=( [key1]=hello [key2]=world )
echo ${arr1[0]}
echo ${arr2[key1]}

1.3.3 取出所有元素

declare -a arr=( hello world )
echo ${arr[@]}
echo ${arr[*]}

1.3.4 数组的长度

declare -a arr=( hello world )
echo "arr length is ${#arr[@]}"
# 需要看总长度的时候使用@ 如果是当个元素长度则使用索引/key

1.3.5 向数组中添加元素

declare -a arr=( hello world )
arr+=(hogwarts)
arr[5]=harry

1.3.6 输出索引

declare -a arr=( hello world )
arr+=(hogwarts)
arr[5]=harry
echo "arr indexs is ${!arr[@]}"

1.4 控制语句

1.4.1 if 循环

# 单条件
if [ expression ];
then
statements
fi
# 多条件与
if [ expression_1 ] && [ expression_2 ];
then
statements
fi
# 多条件或
if [ expression_1 ] || [ expression_2 ];
then
statements
fi
# 多分支

if [ expression_1 ] ;
then
statements
elif [ expression_2 ] ;
then
statements
else
statements
fi

1.4.2 for 循环

for variable in list
do
commands
done
//或
for (( expression1; expression2; expression3 ))
do
commands
done

for循环范围:

for num in {10..0..1}
do
echo $num
done

for循环数组:

arr=( "Welcome" "to" "hogwarts" )
for i in "${arr[@]}"
do
echo $i
done

# @ 与 * 的区别

for i in ${arr[@]}
do
echo $i
done

for i in ${arr[*]}
do
echo $i
done

for i in "${arr[*]}"
do
echo $i
done

表达式for循环:

for ((i=1; i<=10; i++))
do
echo "$i"
done

1.4.3 while 循环

while [ expression ];
do
commands;
multiple commands;
done

1.4.4 break 与 continue

  • break语句可以终止for循环的重复性任务。
  • continue语句在for循环中,以特定条件,跳过该条件下给定的特定语句。

1.5 函数

function_name() {
  commands
}

1.5.1 变量的作用域

  • 默认情况下,所有变量都定义为全局变量,即使在函数内部声明,也是如此;
  • local关键字在函数内部声明局部变量,该变量只能够在该函数内部使用。

1.5.2 返回值

  • Bash函数中,其返回值是执行的最后一个语句的状态。1-255(十进制)范围内表示失败,除此之外表示成功。
  • 想要从函数中返回任意实际的值,最简单的选择是将函数的执行结果分配给一个全局变量。
  • 更好的选择,是将值发送到stdout再打印输出。

1.5.3 参数传递

  • $0为函数本身;
  • $1、2…n参数传递的顺序位;
  • $#保存传递给函数的位置参数或数量;
  • 软件测试学习笔记丨Linux-Bash编程语法_数组
  • $?显示最后一个命令的退出状态,0表示正常,其他表示错误退出。

二、Bash脚本编写

2.1 Bash脚本创建

  • touch bash_script.sh
  • vim或者vi bash_script.sh
  • 写入代码
#!/bin/bash
echo "Hello Bash"

### 2.2 Bash执行
- `chmod +x bash_script.sh`
- `./bash_script.sh`

2.3 Bash注释

  • 单行注释:
  • 注释段落的开头使用 #
  • 多行注释:
  • <<BLOCKBLOCK之间的内容会被当成注释;
  • :"中的内容会被当成注释。

2.4 read命令

  • read命令是用于从终端或者文件中,读取输入的内部命令;
  • 格式:read <variable_name>
  • read常用参数:
  • -p命令行选项在同一行输入;
  • -s静默输入;
  • -a对数组进行多个输入。

2.4.1 read读取单个或多个变量

echo "Enter the your name: "
read user_name
echo "Your name is $user_name"
echo
echo "Enter your age, phone and address: "
read age phone address
echo "your age is:$age, phone is:$phone, address: $address "

2.5 算术运算

  • Bash支持11种算术运算符。

运算符

描述

运算示例

+

加法

$((7+2)) ,打印输出 9

-

减法

$((7-2)) ,打印输出 5

*

乘法

$((7*2)) ,打印输出 14

/

除法

$((18/2)) ,打印输出 9

**

求幂

$((10**2)) ,打印输出 100

%


$((11%3)) ,打印输出 2

+=

常量递增变量,结果存储回变量

x=7;let”x += 7”;echo $x ,打印输出 9

-=

常量递减变量,结果存储回变量

x=7;let”x -= 2”;echo $x ,打印输出 5

*=

变量乘以常量,结果存储回变量

x=7;let”x *= 2”;echo $x ,打印输出 14

/=

变量除以常量,结果存储回变量

x=18;let”x /= 2”;echo $x ,打印输出 9

%=

变量除以常量的余数,结果存储回变量

x=11;let”x %= 3”;echo $x ,打印输出 2

2.5.1 关系运算符

运算符

描述

运算示例

=

赋值

a=$b ,把变量b的值赋给a

==

等于

[ $a == $b ] 相等则返回true

!=

不相等

[ $a != $b ]不等则返回true

2.5.2 关系运算符列表

运算符

描述

运算示例

-eq

检查两个数字是否相等

1 -eq 1 ,返回 true

-ne

检查两个数字是否不相等

1 -ne 2 ,返回 true

-gt

检查左边数是否大于右边数

2 -gt 1 ,返回 true

-lt

检查左边数是否小于右边数

1 -gt 2 ,返回 true

-ge

检查左边数是否大于等于右边数

2 -ge 1 ,返回 true

-le

检查左边数是否小于等于右边数

1 -le 2 ,返回 true

2.5.3 Bash算术运算符

  • 双括号
  • 反引号:反引号要与expr(通用表达式求值器)执行算术扩展。
  • let:let "Num3=$((Num1+Num2))"

2.6 脚本输出文件

touch test.sh
chmod +x test.sh
vim test.sh
#!/bin/bash
echo "Hello Bash" > test.txt

2.7 Bash与目录操作命令结合

# 创建目录并生成文件
mkdir test
cd test
echo "hello" > test.txt
ls

2.8 Bash与内存操作结合

#!/bin/bash

for i in `ps aux | awk '{print $6}'|grep -v 'RSS'`
do
 count=$[ $count+$i ]
done
echo "$count/kb"

2.9 脚本中编写函数

  • 脚本中编写了函数,需要在脚本中调用才会执行;
  • 函数如果涉及传参,需要在调用函数时带上参数。

标签:do,arr,变量,打印输出,echo,Linux,Bash,软件测试
From: https://blog.51cto.com/u_16547786/11928075

相关文章

  • linux 部署Ollama本地大模型
    简介llama是一个大模型的管理框架,其作用类似于Docker:如果将每一个标准化的大模型视为“镜像”,那么Ollama就能够通过一行命令快速拉取并运行这些大模型。然而,Ollama本身是基于命令行的服务,所以为了方便我们对大模型进行微调和使用,还需要引入maxkb。maxkb提供了一个......
  • Linux中cd命令的主要作用是什么?
    cd命令是Linux系统中用于改变当前工作目录的命令,其全称为changedirectory,这个命令在Unix、Linux和MacOS等操作系统中都非常常用,那么Linux常用命令cd如何使用?具体请看下文。cd命令用于在Linux文件系统中导航。它允许您更改当前工作目录,即执行命令时所处的位置。基本......
  • 学习Linux报名培训班有必要吗?
    在互联网高速发展的时代,Linux作为互联网行业非常重要的热门技术,其需求量剧增,人才市场出现很大的缺口,而大学生就业压力较大,因此很多人会选择转行学Linux。那么Linux培训班有必要报吗?我们通过这篇文章来看看吧。综合情况来讲,学习Linux报名培训班是很有必要的。1、Linux......
  • linux一键安装MySQL的脚本,保姆级别的脚本注释,你肯定能看懂
    1,下载官方安装包首先下载MySQL的官方安装包2,上传安装包到/opt//opt//mysql-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz3,复制以下代码保存到/opt/mysql_install.sh里面去(你需要相对应修改的地方就是设置MySQL用户密码那里,在第22行23行那里,其他不用动)然后赋予可执......
  • Linux 内核 6.11 RC6 发布!
    2024年9月2日,Linux内核开发者LinusTorvalds宣布了Linux内核6.11的第六个候选版本(RC6)的发布。与以往的发布时间相比,由于Torvalds正在国外旅行,这次的RC6提前半天发布。这是6.11版本开发周期的又一部分,主要是继续修复和稳定系统的各个组成部分,特别是文件系统、......
  • Linux文本处理大纲
    目录一、正则表达式二、字符串截取命令(1)cut命令(2)printf命令(3)awk命令1、条件(pattern):一般使用关系表达式作为条件2、动作(Action):格式化输出流程控制语句三、字符串处理命令(1)排序命令sort(2)统计命令wc一、正则表达式正则表达式用来在文件中匹配符合条件的字符串,正......
  • linux系统下各种日志文件的介绍,查看,及日志服务配置
    转载于https://zhuanlan.zhihu.com/p/298335887,侵权删!linux系统日志文件的详细介绍日志文件的作用日志文件用于记录linux系统的各种运行信息的文件,相当于linux主机的日记,不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录事件、程序错误等。.日志文件对于诊断和......
  • Linux 系统中的 `/etc/sysctl.conf` 配置文件内核参数设置
    以下是对这些参数的详细解释:网络参数net.ipv4.ip_forward=0:禁用IP转发,防止系统作为路由器转发数据包。net.ipv4.conf.default.rp_filter=1:启用反向路径过滤,增加网络安全性,防止IP地址欺骗。net.ipv4.conf.default.accept_source_route=0:禁用源路由选项,防止数据包通......
  • linux批量运维主机(二)
    Salt一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。salt底层采用动态的连接总线,使其可以用于编配,远程执行,配置管理等等。这比ansible的更有优势。下面安装saltstackUI界面。#卸载dockersudoyumrem......
  • 软件测试学习笔记丨Pytest+Allure测试计算器
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/31954项目要求3.1项目简介计算器是近代人发明的可以进行数字运算的机器。计算器通过对加法、减法、乘法、除法等功能的运算,将正确的结果展示在屏幕上。可帮助人们更方便的实现数字运算。一般情况下计算器除显示计算结果......