shell脚本相关关系、浮点、循环
将一堆命令放在脚本里变成可执行脚本执行;
脚本编写,文件名为.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代表,获取执行脚本后面第一个参数

shell脚本相关关系、浮点、循环的更多相关文章
- linux shell脚本相关知识
最近的项目中,有一个编写linux shell脚本的任务.由于之前不是很熟悉,在这个过程中遇到了很多困难,查找了很多资料,也收获了很多.下面是linux shell脚本中常用的知识总结. 1基础语法 ...
- shell脚本——作业二(循环作业)
1.通过位置变量创建linux系统账户及密码 $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 #!/bin/bash #创建用户与密码 declare -i c=0 if [ -z $1 ...
- 随笔记录 shell脚本相关内容 2019-8-26
字符串截取: 假设变量为var=http://www.hao.com/123.htm1. # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,# 号是运算符, ...
- shell脚本判断语句和循环语句
if判断语句 exit跳出判读语句 不加exit的结果 read -n(不换行) 判断是否输入的是数字 read age[[ $age =~ ^[0-9]+$ ]]if [ $? -ne 0 ]; t ...
- Shell脚本之:退出循环
Shell也使用 break 和 continue 来跳出循环. break命令 下面的例子中,脚本进入死循环直至用户输入数字大于5,使用break跳出这个循环. #!/bin/bash while ...
- Shell脚本之七 选择、循环结构
一.if else if 语法格式 if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $(ps -e ...
- Shell脚本相关
cat /proc/17616/cmdline 17616代表进程号 用这个可以完整打印出当前的进程的全名 当前shell的进程号.你可以使用ps -A 看你自己shell 的pid.是内置变量. $ ...
- shell脚本之for 列表循环
作用:对列表进行循环处理 语法: for var in list do commands done 案例: 1.读取列表中的值 2.读取列表中的复杂值 异常案例:未显示出“'”单引号,使语句出现异常 ...
- LINUX shell脚本相关
调试脚本 测试脚本语法:bash -n file.sh 查看脚本每一步执行情况:bash -x file.sh 位置变量:$1,$2,... 特殊变量: %?:最后一个命令的执 ...
随机推荐
- docker 运行jenkins及vue项目与springboot项目(三.jenkins的使用及自动打包vue项目)
docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...
- 报错——selinux配置文件修改错误导致无法启动虚拟机
selinux配置文件修改错误导致无法启动虚拟机 问题 错误修改配置文件 [root@centos73 ~]# cat /etc/selinux/config # This file controls ...
- auto_now_add与auto_now的区别
- 【HDU6621】K-th Closest Distance【线段树】
题目大意:给你一堆数,每次询问区间[l,r]中离p第k小的|ai-p| 题解:考虑二分答案,对于每个可能的答案,我们只需要看在区间[l,r]里是否有≥k个比二分的答案还要接近于p的 考虑下标线段树,并 ...
- C# DataTable转为ArrayList
private static ArrayList DataTableToArrayList(DataTable data) { ArrayList array = new ArrayList(); f ...
- POJ3233]Matrix Power Series && [HDU1588]Gauss Fibonacci
题目:Matrix Power Series 传送门:http://poj.org/problem?id=3233 分析: 方法一:引用Matrix67大佬的矩阵十题:这道题两次二分,相当经典.首先我 ...
- Luogu P1478 陶陶摘苹果
Luogu P1478 陶陶摘苹果(升级版) 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2 ...
- Shell逻辑运算符及表达式
一. 运算符总结说明 1. 条件运算符 运算符号 代表意义 应用 说明 = 等于 整型或字符串比较: str1 = str2 字符串str1 和字符串str2 相等时返回真,如果在[]中,只能是字符串 ...
- 将windows下的文件上传到Linux服务器上
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...
- Ubuntu安装护眼程序
目录 1.安装 2.配置 参考资料 一开始想在Ubuntu下安装在Windows下使用的f.lux,但是折腾了很久f.lux也没能正常运作.于是打开另一台Ubuntu电脑,将上面使用的Redshift ...