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 ...
随机推荐
- Map / Set / Treeset 取出指定下标index的元素
Treeset 属于 set 集合中的一种数据类型,HashSet 以及LinkedHashSet 原理相同 需求:想直接在Treeset类型下,取出指定下标的元素,但是Set 下没有 get()方 ...
- 一篇文章弄懂 Java 反射的使用
说到Java反射,必须先把 Java 的字节码搞明白了,也就是 Class , 大 Class 在之前的文章中,我们知道了Java的大Class就是类的字节码,就是一个普通的类,里面保存的是类的信息, ...
- MinkowskiNonlinearities非线性
MinkowskiNonlinearities非线性 MinkowskiReLU class MinkowskiEngine.MinkowskiReLU(*args, **kwargs) __init ...
- YOLOv4没交棒,但YOLOv5来了!
YOLOv4没交棒,但YOLOv5来了! 前言 4月24日,YOLOv4来了! 5月30日,"YOLOv5"来了! 这里的 "YOLOv5" 是带有引号的,因为 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载
在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...
- 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...
- 11:(1055, "'bbs02.app01_category.name' isn't in GROUP BY")
后台报错:[err] 1055 -- 'xxx' isn't in GROUP BY 解决方案: 初步判断是数据库(版本?配置?)的问题 进入mysql 的my.ini配置文件 ctrl+f 搜索找 ...
- 网络游戏逆向分析-3-通过发包函数找功能call
网络游戏逆向分析-3-通过发包函数找功能call 网络游戏和单机游戏的分析有相似点,但是区别还是很大的. 网络游戏和单机游戏的区别: 网络游戏是需要和服务器进行交互的,网游中的所有功能几乎都会先发送封 ...
- JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇
JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...
- Golang去除字符串前后空格
Golang去除字符串前后空格 实现Demo package main import "fmt" func DeletePreAndSufSpace(str string) str ...