Python 测开28期 - WL - 学习笔记 - Bash 编程与脚本

Bash 编程语法

变量

  • 规则

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头

  • 中间不能有空格,可以使用下划线(__)

  • 不能使用标点符号

  • 不能使用 bash 里的关键字(可用 help命令查看保留关键字)

  • 定义与使用变量

  • 定义变量:your_name=“abc”

  • 调用变量:echo $your_name

  • 只读变量

  • 定义变量:a=“123”

  • 不能被更改和删除:readonly a

  • 删除变量

  • 删除变量:unset variable_name

  • 不能删除只读变量

  • 变量类型

  • 变量仅在当前窗口生效

  • 字符串:your_name=“hogwarts”

  • 拼接字符串:greeting=“hello,”$your_name"!"

  • 数组:array_name=(value0 value1 value2)

  • 取数组:valuen=${array_name[n]}

  • 单独赋值:array_name[0]=value0

  • 实战


# 使用变量 与删除变量

a="dds"

b=10

readonly b

echo $a #结果是 dds

echo $b #结果是 10

unset a #成功删除

unset b # 删除失败

# 数组初始化

my_array=(A B "C" D)

echo "第一个元素为:${my_array[0]}"

# 结果是:第一个数组是:A

# 数组单个定义

my_array[1]=B

my_array[2]=ss

echo "数组的元素为:${my_array[*]}"

# 结果是:数组的元素为:B ss

echo "数组的元素为:${my_array[@]}"

# 结果是:数组的元素为:B ss

控制语句

条件分支:if
  • if 定义

  • if condition

  • then

  • command1

  • command2

  • commandN

  • fi


if [2==2]; then echo "true";else echo"false";fi

if [[2>1]]; then echo "true";else echo "false";fi

  • 用大于小于时,需要用双[],判断等于时用

  • 内外与关键字前后都要有空格

  • -eq:是否相等

  • -lt:小于

  • -gt:大于

  • 实战


# 比较两个变量的大小并输入不同的值

if [ $a -eq $b ]; then echo "equal"; elif [ $a -lt $b ]; then echo "small"; elif [ $a -gt $b ]; then echo "big";fi

for
  • for 定义

  • for var in item1 item2 … itemN

  • do

  • command1

  • command2

  • commandN

  • done

  • 读取文件遇到空格会自动换行

  • 演示


for loop in 123456

do

ehco "hello:"$loop

done

  • 实战

# 循环读取文件内容并输出

for i in $( cat dir.txt ); do echo $i; done

while
  • while 定义

  • while condition

  • do

  • command

  • done

  • 遇到空格,通用会把空格输出

  • 示例


int=1

while(($int<=5))

do

echo $int

let "int++"

done

  • 实战

# 循环读取文件内容并输出

while read line; do echo $line; done < dir.txt

$ read line 读取一行

Bash 脚本编写

read 命令

  • read 命令是用于从终端或者文件中读取输入的内部命令

  • 读取整行输入

  • 每行末尾的换行符不被读入

read 命令使用
  • 从标准输入读取输入并赋值给变量

  • read var

  • 从标砖输入读取多个内容

  • read var1 var2 var3

  • 不指定变量(默认赋值给 REPLY)

  • read

脚本参数传递

  • $0 脚本名称

  • $1~$n 获取参数

  • $# 传递到脚本的参数个数

  • $$ 脚本运行的当前进程ID号

  • $* 以一个单字符串显示所有向脚本传递的参数

  • $? 显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误

基本运算

算术运算
  • a=10 b=20

  • ‘+’ 加法 expr $a + $b'结果是30

  • ‘-’ 减法 expr $a - $b'结果是-10

  • ‘*’ 乘法 expr $a \* $b 结果是200

  • ‘/’ 除法 expr $b / $a 结果是2

  • ‘%’ 取余 `expr $b % $a`` 结果为10

  • ‘=’ 赋值 a=$b 将把变量 b 的值赋给 a

  • ‘==’ 相等 相同则返回 true: [ $a == $b ] 反之返回false

  • ‘!=’ 不相等。不相同则返回true: [ $a != $b ] 反之返回false

  • ‘-eq’ 检测相等 [ $a -eq $b ] 反之返回 false

  • ‘-ne’ 检测不相等 [ $a -ne $b ] 反之返回fasle

  • ‘-gt’ 检测左边是否大于右边

  • ‘-lt’ 检测左边是否小于右边

  • ‘-ge’ 检测左边是否大于等于右边

  • ‘-le’ 检测左边是否小于等于右边

bash 与 linux 命令组合

bash 与目录命令

  • 创建目录并生成文件

  • 创建文件夹:mkdir test

  • 移动位置:cd test

  • 把左边的内容重定向到右边,输出与创建文件:echo “hello”>text.txt

  • 查看列表:ls

bash 与内存

  • 统计内存使用

  • for i in ps aux| awk '{print $6}' | grep -v 'RSS'

  • count=$[$count+$i]

  • echo “$count/kb”


read a