一、如何抒写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脚本语法的更多相关文章

  1. shell 脚本中所有循环语法

    写出 shell 脚本中所有循环语法 for 循环 : for i in $(ls);do echo item:$i done while 循环 : #!/bin/bash COUNTER=0 whi ...

  2. [转帖]编写shell脚本所需的语法和示例

    编写shell脚本所需的语法和示例 https://blog.csdn.net/CSDN___LYY/article/details/100584638 在说什么是shell脚本之前,先说说什么是sh ...

  3. shell编程之服务脚本编写,文件锁以及信号捕获

    shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...

  4. Shell脚本、Shell脚本结构、date命令的用法、变量

    1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构:   #!/bin/bash  以#!/bin/bash开头,即以/bin/ba ...

  5. LinuxShell脚本——认识Shell脚本

    LinuxShell脚本——认识Shell脚本 摘要:本文主要介绍了Shell脚本的一些基本知识. 什么是Shell脚本 shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件, ...

  6. Shell脚本之一 Shell脚本简介

    一.什么是shell? 我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面.Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境.当一个用户登录 Linux 之后 ...

  7. [shell]如何测试shell脚本,保证正确

    如何用最快最有效的方式进行测试? 很多开发的习惯是,二话不说,写完/拿到,就跑一把,看看输入,输出,想要的操作是否完成,也就过了. 其实这是十分不严谨的,若是未经过QA,风险还是相当大的. 以下即sh ...

  8. 【运维】Shell -- 快速上手Shell脚本

    1.Shell概述 shell脚本是利用shell的功能所写的一个[程序(program)].这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式.管道命令与数 ...

  9. Shell文件权限和脚本执行

    一.预备知识 1.shell的作用   2.常识 (1)Tab键自动补全   使用Terminal时,输入命令的前几个字母,敲tab会自动补全命令或文件名.目录等. 好处:操作速度更快:不容易出错: ...

  10. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

随机推荐

  1. Python+Selenium学习笔记13 - 窗口截图及关闭

    涉及方法 get_screenshot_as_file() 1 # coding = utf-8 2 3 from selenium import webdriver 4 from time impo ...

  2. lms框架应用服务接口和服务条目详解

    目录 应用接口的定义 服务路由特性 服务条目 根据服务条目生成webAPI 服务条目的治理特性 缓存拦截 服务条目的例子 应用接口的实现 开源地址与文档 应用接口的定义 服务应用接口是微服务定义web ...

  3. 使用Apache TVM将机器学习编译为WASM和WebGPU

    使用Apache TVM将机器学习编译为WASM和WebGPU TLDR 在Apache TVM深度学习编译器中引入了对WASM和WebGPU的支持.实验表明,在将模型部署到Web时,TVM的WebG ...

  4. 视觉SLAM技术应用

    视觉SLAM技术应用 SLAM技术背景 SLAM技术全称Simultaneous localization and mapping,中文为"同时定位与地图构建".SLAM可以在未知 ...

  5. IoU、GIoU、DIoU、CIoU损失函数

    IoU.GIoU.DIoU.CIoU损失函数 目标检测任务的损失函数由Classificition Loss和Bounding Box Regeression Loss两部分构成.目标检测任务中近几年 ...

  6. Covid经济型自主汽车

    Covid经济型自主汽车 Autonomous Vehicles in Covid Economy Covid经济已经对汽车行业产生了负面影响,更多的变化正在进行中,同时也带来了大量的不确定性.我们可 ...

  7. 微信小程序 -- 基于 movable-view 实现拖拽排序

    微信小程序 -- 基于 movable-view 实现拖拽排序 项目基于colorui样式组件 ColorUI组件库 (color-ui.com) 1.实现效果 2. 设计思路 movable-vie ...

  8. 【Azure 机器人】微软Azure Bot 编辑器系列(2) : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorials)

    欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...

  9. SpringBoot_登录注册

    学习SpringBoot需要的前期基础 Spring(Bean容器 IOC set 构造方法 AOP) SpringMVC(GET POST Restful) 对于SpringBoot,约定大于配置 ...

  10. SQL 利用存储过程实现对表数据有则更新无则添加(转)

    初学存储过程,发现这篇文章简单易懂,特意转载,地址 http://blog.csdn.net/luotuomianyang/article/details/52013144 如果某一操作包含大量的T- ...