shell脚本(2)-shell脚本语法
一、如何抒写shell脚本
1、shell脚本的命名
名字要有意义,不要以a、b、c、1、2、3这种方式命令,建议以sh结尾,在30个字节内,例如:check_memory.sh
2、shell脚本的格式
shell脚本开头必须指定运行环境以#!这个特殊组合来组成,如:#!/bin/bash指该脚本运行解析由/bin/bash来完成
shell的注释使用#号(执行脚本的注释最好使用英文)(#!是特例)
#Author:Mr White
#Created Time:2021/07/17 00:50
#Srcipt Description:nginx install script
二、shell脚本运行方法
1、脚本运行需要执行权限,赋予执行权限后,该脚本可以运行
chmod u+x filename
2、不希望赋予脚本执行权限,那么可以使用base命令来运行未给予执行权限的脚本
base filename
三、shell中的特殊符号
不要和正则表达式中的符号含义搞混淆了。
~:家目录 #cd ~代表进入家目录
! :执行历史记录 !!执行上一条命令
$:变量中取内容符
+ - * / % :加减乘除余
&:后台执行
*:通配符,匹配所有
?:通配符,匹配一个字符
;:一行执行多个命令,用分号分隔
|:管道符,上一个命令的输出作为下一个命令的输入
\:转义字符
``:反引号,命令中执行命令
' ':单引号,脚本中字符串用单引号引起来,不同与双引号是的,单引号不解释变量(两个单引号可以)
" ":双引号,脚本中出现的字符串可以用双引号引起来
四、管道
| :管理符在shell中使用最多,很多组合命令都需要通过管道来完成输出,管理符其实就是下一个命令对上一个命令的输出做处理
[root@localhost ~]# cat /etc/passwd | grep "root"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
五、重定向
1、重定向输出:覆盖原数据
[root@localhost test20210718]# echo haha > ./test.txt
[root@localhost test20210718]# cat test.txt
haha
[root@localhost test20210718]# echo hehe > ./test.txt
[root@localhost test20210718]# cat test.txt
hehe
2、重定向追加输出:在原数据的末尾添加
[root@localhost test20210718]# echo zhuijia1 >> test.txt
[root@localhost test20210718]# echo zhuijia2 >> test.txt
[root@localhost test20210718]# echo zhuijia3 >> test.txt
[root@localhost test20210718]# cat test.txt
hehe
zhuijia1
zhuijia2
zhuijia3
3、重定向输入:
[root@localhost test20210718]# wc < test.txt #返回 行 单词 字节
4 4 32
4、重定向追加输入:
[root@localhost test20210718]# wc << EOF
> hello world!!
> EOF
1 2 14
六、shell脚本中的数学运算
1、expr命令:只能做整数运算,格式比较古板,注意空格
[root@localhost test20210718]# expr 2 + 3
5
[root@localhost test20210718]# expr 2 - 3
-1
[root@localhost test20210718]# expr 2 \* 3
6
[root@localhost test20210718]# expr 2 / 3
0
[root@localhost test20210718]# expr 2 % 3
2
2、使用bc计算器处理浮点运算,scale=2代表小数点保留两位
[root@localhost test20210718]# free -mh
total used free shared buff/cache available
Mem: 972M 176M 435M 7.7M 360M 647M
Swap: 2.0G 0B 2.0G
[root@localhost test20210718]# expr 435 / 972
0
[root@localhost test20210718]# echo "`echo "scale=2;435*100/972" | bc`%"
44.75%
3、使用let对整数做运算,需要赋值变量
[root@localhost test20210718]# let a=5+1
[root@localhost test20210718]# echo $a
6
4、(())运算符,处理整形
[root@localhost test20210718]# echo $((1+2))
3
七、脚本退出
exit NUM退出脚本,释放系统资源,NUM代表一个整数,代表返回值
shell脚本(2)-shell脚本语法的更多相关文章
- shell 脚本中所有循环语法
写出 shell 脚本中所有循环语法 for 循环 : for i in $(ls);do echo item:$i done while 循环 : #!/bin/bash COUNTER=0 whi ...
- [转帖]编写shell脚本所需的语法和示例
编写shell脚本所需的语法和示例 https://blog.csdn.net/CSDN___LYY/article/details/100584638 在说什么是shell脚本之前,先说说什么是sh ...
- shell编程之服务脚本编写,文件锁以及信号捕获
shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...
- Shell脚本、Shell脚本结构、date命令的用法、变量
1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构: #!/bin/bash 以#!/bin/bash开头,即以/bin/ba ...
- LinuxShell脚本——认识Shell脚本
LinuxShell脚本——认识Shell脚本 摘要:本文主要介绍了Shell脚本的一些基本知识. 什么是Shell脚本 shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件, ...
- Shell脚本之一 Shell脚本简介
一.什么是shell? 我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面.Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境.当一个用户登录 Linux 之后 ...
- [shell]如何测试shell脚本,保证正确
如何用最快最有效的方式进行测试? 很多开发的习惯是,二话不说,写完/拿到,就跑一把,看看输入,输出,想要的操作是否完成,也就过了. 其实这是十分不严谨的,若是未经过QA,风险还是相当大的. 以下即sh ...
- 【运维】Shell -- 快速上手Shell脚本
1.Shell概述 shell脚本是利用shell的功能所写的一个[程序(program)].这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式.管道命令与数 ...
- Shell文件权限和脚本执行
一.预备知识 1.shell的作用 2.常识 (1)Tab键自动补全 使用Terminal时,输入命令的前几个字母,敲tab会自动补全命令或文件名.目录等. 好处:操作速度更快:不容易出错: ...
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
随机推荐
- eclispe--tomcat配置
eclipse安装tomcat方法: 1.下载tomcat,从官网下载,地址:http://tomcat.apache.org/download-70.cgi 2.将下载下来的压缩包解压,放在自己想放 ...
- 为什么选择b+树作为存储引擎索引结构
为什么选择b+树作为存储引擎索引结构 在数据库或者存储的世界里,存储引擎的角色一直处于核心位置.往简单了说,存储引擎主要负责数据如何读写.往复杂了说,怎么快速.高效的完成数据的读写,一直是存储引擎要解 ...
- [leetcode] 35. 搜索插入位置(Java)(二分)
35. 搜索插入位置 二分,太简单,没啥好说的 class Solution { public int searchInsert(int[] nums, int target) { if (nums. ...
- 旷视MegEngine数据加载与处理
旷视MegEngine数据加载与处理 在网络训练与测试中,数据的加载和预处理往往会耗费大量的精力. MegEngine 提供了一系列接口来规范化这些处理工作. 利用 Dataset 封装一个数据集 数 ...
- Redux/Mobx/Akita/Vuex对比 - 选择更适合低代码场景的状态管理方案
近期准备开发一个数据分析 SDK,定位是作为数据中台向外输出数据分析能力的载体,前端的功能表现类似低代码平台的各种拖拉拽.作为中台能力的载体,SDK 未来很大概率会需要支持多种视图层框架,比如Vue2 ...
- 如何安装/导入Arduino库文件及库文件的不同位置与区别(以eFLL中嵌入式模糊逻辑库为例)
网上有数百个可在Aruduino中使用的库,这些代码集使得我们无需从0-1地搭建我们所需功能,这使得学习和使用Arduino变得更加方便简单.除此之外,平时直接从网上download下的代码也很有可能 ...
- VRRP协议的原理与配置
VRRP出现的原因: 局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果此时默认网关设备发生故障,将中断所有用户终端的网络访问,这很可能会给用户带来不可预计的损失. VRRP的优点: ...
- Rethinking Training from Scratch for Object Detection
Rethinking Training from Scratch for Object Detection 一. 概述 正常训练目标检测的流程分为以下几种: 在imagenet上进行预训练,然后在特定 ...
- Nginx 配置文件介绍
目录 1.1 常用命令 1.2 Nginx的配置文件结构 1.3 Nginx的全局配置 1.4 HTTP服务器配置 1.5 HttpGzip配置 1.6 负载均衡配置 1.7 server虚拟主机配置 ...
- 如何提升springboot服务吞吐量
生产环境偶尔会有一些慢请求导致系统性能下降,吞吐量下降,下面介绍几种优化建议. 方案 1.undertow替换tomcat 电子商务类型网站大多都是短请求,一般响应时间都在100ms,这时可以将web ...