本地变量适合在终端使用,新开一个终端或关闭后就会消失
例:
本地变量在哪里都可以用,文件和终端不在一个环境内
定义:local Var_Name="Value"
例:
a{ name=张三 echo } b{ name=李四 echo }
只在内部有效,出了花括号没用
常用的环境变量
主要用于橡胶板中传递参数
表示方法:$1,$2,$3,..$n
例: ./1.sh 1 5 9 (传入的参数)
重定向就是修改指令发送给计算机的途径,计算机将指令执行结果返回给用户的途径
- 输出重定向
- 标准输出重定向
- 错误输出重定向
- 标准输入:键盘
- 输入重定向:<
- 标准输出:终端
- 标准错误输出:终端
- 标准输出重定向:> >>
- 标准错误输出重定向:2> 2>>
将结果保存到文件、屏蔽输出结果
dd if=/dev/zero of=zeros.bin bs=1G count=100000
#读0,用来测试的,不显示内容但会占用内存
- |
- 仅仅用于传递命令的执行结果给另一个命令
- -gt 大于
- -lt 小于
- -ge 大于等于
- -le 小于等于
- -ne 不等于
- -eq 等于
test EXPRESSION
例:test 3 -gt 4
[EXPRSSION]
例: [ 3 -gt 4 ]
[[ EXPRESSION ]]
例:[[ 2 -gt 1 ]]
用命令执行状态来作为判断条件
查看脚本的执行过程:
bash -x 脚本名
if判断的三种格式
if 条件;then 分支1 fi
if 条件;then 分支1 else 分支2 fi
if 条件;then 分支1 elif 分支2 elif 分支3 ... else 分支 fi
例:成绩大于90,则输出成绩A;成绩大于80,则输出成绩B;成绩大于70,则输出成绩C;成绩大于60,则输出成绩D;0分以上则输出E
例:让用户指定一个文件,判断如果有空白行,就显示空白行数,没有则提示"no"
整型测试通常都是二元测试
格式是:num1 oprand num2
位置变量
read命令
read -p "参数" 变量名
例:
read -p "请输入第一个数字:" num
例题:
让用户通过键盘输入一个用户,如果用户存在就显示其用户的用户名和uid,否则就显示用户不存在
双目测试
比较两个字符串
单目测试
例:
例:
例:让用户输入一个用户名,先判定用户是否存在,不存在以7为退出码;
判断用户的shell是否为/bin/bash,如果是则显示"bash user",退出码为0,否则则显示为"not bash user" 退出码为1
例:1.显示如下菜单
cpu) show cpu info;
mem) sowmemory info;
quit) quit
请输入你的选择:
2.如果用户选择了cpu则显示文件/proc/cpuinfo的信息;
3..如果用户选择了mem则显示文件/proc/meminfo的信息;
4.如果用户选择了quit则退出且状态码为5;
5.如果用户输入其他其他字符,则显示未知选项请重新执行脚本,退出码为6;
#!/bin/bash echo "参数列表:$#" echo "参数列表:$@" echo " " shift 2 echo "参数列表:$#" echo "参数列表:$@" echo " " shift 2 echo "参数列表:$#" echo "参数列表:$@"
说明:shift在这里就是起到了一个轮替的作用,2表示一次轮替2个参数
在下一次echo的时候,参数会从轮替后的数字开始计算
例:使用形式如下:username u username[v{1|2}]
-u选项用于指定用户名;脚本显示用户的uid,gid
如果同时使用-v选项,v后面值是1,显示用户的家目录
v后面的值是2,显示用户的家目录和shell类型