一、介绍
shell 是属于弱类型语言,指的是在定义变量时不需要指定变量的类型,就如python也是弱类型语言。一般以:
:.sh结尾的文件
:文件第一行固定为:#!/bin/bash,表示指定以shell进行编程。
:#表示注释
二、shell语法
1、定义变量:变量名=变量值
变量名组成规范:不能以数字,以字母、数字、下划线组成。
释放变量空间:unset 变量名,如unset name
如:name=wzx,输出:echo $name
如:name1="today is a good day",定义变量中带有空格的变量,双引号、单引号均可。
注:单引号、双引号、反单引号的区别:
m="zhangyuqi$name",此时使用的是变量中对应的值
m=’zhangyuqi $name‘,此时输出只是原样输出字符串
m="zhangyuqi \$name",此时输出只是原样输出字符串,与单引号的效果相同。
h=·pwd·,echon h将会输出h对应的shell命令输出当前目录情况。
2、执行shell文件
:当没有执行权限时:sh shell脚本名
:加入执行权限:chmod +x shell脚本名,再执行./shell脚本名
:可以统计有多少个文件:ls -l |wc -l
3、read
read a b:利用键盘输入多个变量,多余的变量将会都给最后一个变量,变量之间用空格隔开
read -p "提示信息" 变量名
4、参数传递:$1,表示接受的第一个参数,$0表示接受执行的文件名,$@,显示全部的参数, $#,统计参数个数
:sh wzx.sh /root
5、重定向:把执行命令的内容输入到文件当中
正确的命令:ls 1>a.txt,将会把正确的命令内容输入文件中这时候时覆盖之前的内容,ls 1>>a.txt,追加到已有的文件中
错误的命令:ls 2>a.txt,将会把错误的命令内容输入文件中这时候时覆盖之前的内容,ls 2>>a.txt,追加到已有的文件中
6、分支结构if else:判断任意目录是否为空
7、逻辑运算符:且:-a 或:-o 非:!
8、比较运算符:相等:-eq 不等:-ne 大于:-gt 小于:-lt 大于等于:-ge 小于等于:-le
9、测试文件的状态:test 参数 变量名
test -e:表示文件存在
test -f:表示文件存在且为文件类型
test -r:表示文件可读
test -w:表示文件可写
test -x:表示文件可执行
10、case分支:
11、for循环:seq start size max表示生成一个序列开始值,步长,最大值
12、while循环:
13、函数:
14、函数返回值的调用:$?
默认正确的返回值为0,错误的返回值为1
15、
获取文件的前5行:head -5 aa.conf
获取文件的前5行后剪取文件的前5个字节:head -5 aa.conf |cut -b 1-4
注意:1个空格是1个字节,1个字母也是1个字节,1个汉字是3个字节。1个空格是1个字符,1个字母也是1个字符,1个汉字是3个字符
获取文件的前5行后剪取文件的前5个字符:head -5 aa.conf |cut -c 1-4
获取文件的前5行后剪取文件的第一个域,-d按域剪取,-f取第几个域:head -5 aa.conf |cut -d ":" -f 1
16、
shell查找某个文件是否包含关键字:grep "root" /etc/group
剪取第一个域:grep "root" /etc/group|cut -d ":" -f 1
17、sed向文件中插入内容
插入文件:sed -i 4a\newLine wzx.txt