将一堆命令放在脚本里变成可执行脚本执行;
脚本编写,文件名为.sh,获取hostname的主机名
系统变量:
Env:查看系统变量
Set :打印所有变量可以和grep和用
Export path:定义全局变量path
将内存中真实的使用量获取到:
mem_used=`free | awk ‘NR==3{print $3}‘`
Echo $mem_use
Man test :查看关系运算符,test相当于[]
关系运算:
大于号(>) -gt
小于-lt
大于等于-ge
小于等于-le
等于-eq
不等于–ne
&& -a
|| -o
Echo $?判断上个计算是否成立0为成立,1为不成立
赋值运算符:
Expr 1 + 2 计算器
浮点运算:
先安装bc软件包
Echo ‘scale=2;30/1000’ |bc–l :scale=2 为保留两位小数 30除以1000
统计当前内存使用率:
Cut –d. f2 :截取点号后面2位数
目录测试
-d 测试目录是否存在
-e 文件存在
-f 文件存在,并是普通文件
-h 文件存在,并且是个连接文件
-w 文件存在,并对当前用户对文件有写权限
-r文件存在,并对当前用户对文件有读权限
-s 文件存在,并且是一个非空文件
字符串测试:
-z 空字符串
-n 非空字符串
!= 两个字符串不相等
= 两个字符串相等
If语句:
写一个脚本,执行该脚本
Var=’/etc/passwd’判断这个var是否是普通文件,是否是block文件,是否是目录
让用户输入路径:
命令后面带参数,文件里面的$1 对应的就是脚本后面的第一个参数,以空格为分割符,其他值以此类推:
向脚本传递参数:
$0取的文件名
$$ 取的这个进程的pid
$*所有脚本后面跟的参数值
$#一共11个值
$?
写脚本判断nginx是否存活,如果死了启动它:
脚本具体如下:
While循环:
While : 有冒号永远为真
下面会形成死循环:
实时刷新free的结果:
Echo –e “aaa\nbbb” : -e 是格式的区分,把里面的\n识别出来是换行符
下面的脚本实现三个值互换:
循环打印10个数,从1到10:
Exit 代表退出整个程序
循环输入用户名密码,直到输入正确的后退出:
Breake跳出本层循环,即跳出whiel循环
Contiune跳出本次循环
循环里面加循环:
如果用户名或密码输入非法(即非空),需要做判断:
-z 空字符串
-a 与
-o 或
|| 或
&&与
$cmd可以添加””这样形成一个整体,不加的话输入值带空格或两个值时会报错
打印1到100的数;1..100 就是1到100
打印a到z的值:
取ls的命令结果:`ls /boot`
每次取`ls /boot`结果给i
写脚本检测一个ip是否被占用:
直接ping一下,不同就是没人用
Ping –c1 ip : -c1就是只ping一次
$? 判断上条命令是否成功,成功为0
>将左边的结果全部定向到右边的文件中 /dev/null这个是个黑洞文件,把不用的直接放里面就可以;
Case语法:
函数:
定义函数:每个命令后都要加分号
里面的abc为函数名,下载下面几十直接调用
可以利用函数编写安装软件命令和启动命令
Return 为返回值,可以人为控制
执行完脚本后使用下面的可以把返回值打印出来:
脚本里面$1代表,获取执行脚本后面第一个参数