Shell基础
1、 脚本命名
*.sh
2、 命名变量
1)自定义变量:
name=zhangsan
2)#env
大写字母
3)$
#echo $name
#echo $PATH
4)作用域
默认自定义变量—局部
通过调用多个shell进程
打开shell---父
再次打开shell---子
Shell----------子
#env
SHLVL==shell level
#export
例如:
5){}
#Name=zhansan
#echo {$name}isastudent
6) > >> 输出
< << 输入
〈〈:制定终止的符号
#cat < &0 表示接受来自键盘的输入
#cat < file 表示接受来自文件的输入
at <file -m
系统在接受输入输出内容存在方向
输入输出描述符:
输入:键盘 0
输出:屏幕 1
错误输出:分离 2
临时符号---起过渡作用3-9
/dev/null----虚拟出来的一个设备(黑洞)
例如:
7)read ---从键盘读取变量的值
注意当变量的数量和值得数量不一致的情况
#read 变量名
8)常见参数
$?-----表示显示最近一条命令的执行状态
状态分类:
退出状态0:表示成功
退出状态1:表示失败
条件:
test 操作数1 操作符 操作数2
test 1 〉 2
操作符:
数值类型数据比较
字符串类型数据表较
文件类型数据表较
[ ]:代替test
注意括号前后加空格
操作数和操作符之间要有空格
[ -x file ]
例如:
. 脚本文件
Sh 脚本文件
./脚本文件
双引号:解释变量
单引号:当作字符串显示
$#:参数的总的数量
$*:显示所有参数
$1:各个参数
$2……$9
shift [n] :将参数向前移n位
例如:
vi file2.sh
9)流程控制结构
If:
If 条件
Then
执行命令
Elif 条件
Then
。。。
Else
。。。
Fi
执行命令的状态也可以当作条件
$?----
内核通过接受到命令退出时返回的数字,判断该命令是否执行成功
exit 100
例如:
vi file3.sh
vi file4.sh
案例:如果10<12输出
vi file5.sh
图10
图11
案例:测试接受参数
如果接受的参数小于3个,提醒
如果大于3个,显示参数
vi file6.sh
图12
图13
接受参数可以当条件
案例:环境变量也可以当条件
如果是root身份登陆,提示
如果不是root,
vi file7.sh
图14
结果:login ok
Case语句
语法
Case 值 in
模式1|模式3)
命令1
。。。
。。。。
;;
模式2)
Esac
提醒:模式里可以使用通配符
shell脚本是给内核看
案例:
vi file8.sh
图15
图16
for循环
语法:
for 变量名 in 列表
do
命令1
。。。
done
案例:
vi file9.sh
图17
图18
案例:
vi file10.sh
图19
图20
until
until 条件
do
命令。。。。。
done
案例:
vi file11.sh
图21
图22
while
while 条件
do
命令
done
break:终止当前循环
contine:终止当前次循环
案例:
vi file12.sh
图23
图24
计算
expr 表达式
$((…..))
expr 3+2---错 expr 3 + 2 ---对 5
expr 3*2---错 expr 3 \* 2 ---对 6
echo $((1+1))---2
echo $((2*3))---6
echo $((name+1))