一、如何抒写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. Nginx_学习笔记

    Nginx_学习笔记 01-Nginx 课程介绍 02-Nginx 的简介 1. 什么是 Nginx ? 03-Nginx 相关概念(正向和反向代理) 1. 什么是反向代理?能否简要画出其示意图 2. ...

  2. nginx 重定向到系统维护页面

    上周末兄弟项目准备扩展服务器以便提供更好的服务,兄弟项目有一些功能是实时提供到我这边的,需要我这边暂时把对应系统功能屏蔽,因为使用nginx,所以可以直接配置nginx重定向到固定系统维护页面. ng ...

  3. 项目记事【Git】:git pull 出错 error: cannot lock ref 'refs/remotes/origin/feature/hy78861': is at d4244546c8cc3827491cc82878a23c708fd0401d but expected a6a00bf2e92620d0e06790122bab5aeee01079bf

    今天 pull 代码的时候碰到以下问题(隐去了一些公司敏感信息): XXX@CN-00012645 MINGW64 /c/Gerrard/Workspace/XXX (master) $ git pu ...

  4. Count(1),Count(*),Count(column)区别

    count是一种最简单的聚合函数,一般也是我们第一个开始学习的聚合函数,那么他们之间究竟由什么区别呢? 有的人说count(1)和count(*)他们之间有区别,而有的人说他们之间没有区别那么他们之间 ...

  5. THINKPHP_(4)_TP模型中with、withJoin和多层关联的深入分析

    1.个人之前博文: TP模型的多表关联查询和多表字段的关键字搜索 TP6中实现多层关联,第一个表关联第二个表查询出的数据,再关联第三个表 2.withJoin的特性 2.1 第一个特性 在TP模型的多 ...

  6. C#将DataTable数据导出CSV文件

    C#将DataTable数据导出CSV文件通用方法! //导出按钮调用导出方法    protected void btnCSV_Click(object sender, EventArgs e)   ...

  7. Selenium-python 之 frame定位元素

    定位元素时经常会出现定位不到元素,这时候我们需要观察标签的上下文,一般情况下这些定位不到的元素存放在了frame或者放到窗口了,只要我们切入进去就可以很容易定位到元素. 处理frame时主要使用到sw ...

  8. selenium-python元素定位技巧(二)

    在python-selenium元素定位中,有很多小技巧,在此记录总结  技巧一.有关联关系的元素有交集关系时,必须添加固定等待,整体调试时候也适当增加固定等待,保持代码运行稳定性.下拉的时候选择下拉 ...

  9. redis常用命令练习

    redis-server redis-cli select 0-15 redis key: string\hash\list\set\sortedset 1.增删改查... keys * 所有key ...

  10. 【C++】类

    一个简单例子: 1 //c++ 类 2 #include<iostream> 3 using namespace std; 4 class Point 5 { 6 private: 7 i ...