3-shell编程,shell 是可以直接操作Linux内核的,这是一个非常重要的工具,一定要掌握,
shell环境准备
Linux的来源于unix
unix是由三部分组成的,工具软件,应用程序,网络协议,
常见的Linux的发行版,ubuntu,centos,redhat,都是Linux的发行版,都是用的Linux的内核,
shell和Linux有密切的关系,shell可以直接操作Linux,
所以shell 是可以直接操作Linux内核的,这是一个非常重要的工具,一定要掌握,
shell编程
1,shell不需要环境,直接Linux就可以运行了,不需要安装环境,
2,shell是原生的,Python是需要环境的,
3,shell入门很快,一天就能学会,就能写脚本了,
shell平时运维用的多,运维都是重复的工作,所以你可以使用这个来减轻自己的工作
1,做日志分析,pv,uv这样的分析,200的300的400的500的,访问有多少,哪一个地域访问我的最多,这些都可以使用shell来操作,
2,比如监控
3,比如初始化,安装等
4,比如备份脚本,这也可以使用shell
shell学习层次
1,能看懂shell脚本
2,能改别人的shell脚本
3,能自己写shell脚本
4,能优化shell脚本,
shell介绍
shell是一个程序,也是一种解释性的编程语言,是c语言写的,和Linux内核沟通的桥梁
kernel,这是内核,内核管理所有的硬件,同时驱动所有的硬件,这是两个大作用,
shell,负责命令的解释,用户的指令给shell,shell转换成为机器语言给kernel,反之也是这样
user,这是下指令的,
内核是识别的二进制,只认识1和0,用户不能直接给内核下指令,
shell的功能
1,命令解释功能
2,启动程序
3,输入输出重定向
4,管道
5,变量维护
5,环境控制
6,shell编程,
shell的语法:变量
命名规则
- 命名只能使用英文字母,数字和下划线,
- 首个字符不能以数字开头中间不能有空格,
- 可以使用下划线 (不能使用标点符号)
- 不能使用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 value3)
取数组 valuen=$farray_name[n]
单独赋值 array_name[o]=value0
实战2
-
数组初始化
my_array=(A B"C" D)
echo"第一个元素为: ${my_array[0]}" -
数组单个定义
my_array[1]=B
echo"数组的元素为: ${my_array[*]}"
echo"数组的元素为: ${my_array[@]}"
shell的语法:流程控制
if定义
if condition
then
command1
command2
...
commandN
fi
fi是指的if语句的结束,
案例
if [ 2==2 ]; then echo "true"; else echo "false" ;fi
if [[ 2 > 1 ]]; then echo "true";else echo "false";fi
for循环
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
案例
for loop in 1 2 3 4 5
do
echo "hello"
done
while循环
while condition
do
command
done
案例
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
shell脚本
1,命名shell脚本,名字要有意义,
2,虽然在Linux中,没有后缀名的概念,但是还是建议是.sh结尾,
3,首行要定义shell的运行环境,
which bash
which python3
#!/usr/bin/python3
#号是注释
#!这两个组合就不是注释了,这是定义脚本在哪里运行
4,最好注释上,是谁写的,什么时间写的,脚本干什么的,将来谁写的谁改,
还可以写上版本号,
可以编辑vi编辑器,让打开一个问题的时候就自带这个内容,
5,后面才是执行的代码
运行shell脚本
1,直接./文件名,就可以执行了,前提是给了这个文件的权限,chmod 700 hello.sh
2,bash hello.sh,使用这个bash命令也可以执行,sh hello.sh也可以,
3,输出内容
> 这是重定向,到一个文件,但是会覆盖
如果想要追加,就是两个符号,>>