目录

一、Shell脚本概述

1、shell脚本的概念

将要执行的命令按顺序保存到一个文本文件

给该文件可执行权限

可结合各种shell控制语句以完成更复杂的操作

2、shell脚本应用场景

重复性操作

交互性任务

批量事务处理

服务运行状态监控

定时任务执行

3、shell的作用——命令翻译器,“翻译官”

介于系统内核与用户之间,负责解释命令行

二、用户的登录shell

三、shell脚本的构成

脚本申明(解释器):若第一行为“#!/bin/bash” ,表示此行之下的代码语句是通过/bin/bash程序来结实执行,#!/bin/bash为默认解释器,还有其他类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。

注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时将不被执行。

可执行语句:比如echo命令,用于输出“ ”之间的字符串。

四、shell脚本的执行

方法一:指定路径的命令,要求文件必须有执行(x)权限

方法二:指定shell来解释脚本,不要求文件必须有写(x)的权限

①、sh脚本路径

②、source脚本路径

五、重定向

1、重定向——交互式硬件设备

2、重定向——重定向操作(用于自动化脚本,输出查证。)



六、Shell脚本变量

1、变量的作用

用来存放系统和用户需要使用的特定参数(值)

变量名:使用固定的名称,由系统预设或用户定义

变量值:能够根据用户设置、系统环境的变化而变化

2、变量的分类

自定义变量:由用户自己定义、修改和使用

环境变量:由系统维护,用于设置工作环境

只读变量:用于变量值不允许被修改的情况

位置变量:通过命令行给脚本程序传递参数

预定义变量:bash中内置的一类变量,不能直接修改

七、自定义变量

1、定义新变量:

变量名=变量值

命名规则:以字母或下划线开头,区分大小写(建议大写)

2、查看变量的值:

echo $变量名

3、赋值时使用引号



看cpu命令free -m

free -m | grep "Men:"

4、read命令获取输入内容

①、方法一:

read -p "提示信息" 变量名

echo $"变量名"

方法二:

echo -n "提示信息"

read 变量名

echo $变量名

5、变量作用范围

默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时,局部变量将无法再使用。

可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。

格式1:export 变量名

格式2:export 变量名=变量值

可以使用 pstree 命令查看Shell环境,输入 bash 命令进入子Shell环境,按Ctrl+D组合键或输入 exit 命令退出子Shell环境。

6、整数变量的运算

1.格式:expr 变量1 运算符 变量2 (运算符 变量3)

2.运算符: + 加法、- 减法、、* 乘法、/ 除法、% 取余

常用的运算表达式:

i=$(expr 10 * 3)

i=$((10 * 3))

i=$[10 * 3]

let i=10*3

i++ 相当于 i=$[$i+1]

i-- 相当于 i=$[$i-1]

i+=2 相当于 i=$[$i+2]

八、环境变量

使用 env 命令可以查看到当前工作环境下的环境变量

变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录,变量PATH表示可执行程序的默认搜索路径。

九、只读变量

用于变量值不允许被修改的情况

十、位置变量

当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。

$n:n为数字,$0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}。

十一、预定义变量

$*、$@:表示命令或脚本要处理的参数。

$*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。

$@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立 的,代表"$1" "$2" "$3" "$4"。

$0:表示当前执行的脚本或命令的名称。

$#:表示命令或脚本要处理的参数的个数。

$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。

shell的编程规范和变量的更多相关文章

  1. 01 shell编程规范与变量

    前言: 大家对shell脚本应该都不算陌生了,如果突然问你什么是shell脚本?是干什么用的?由什么组成以及怎么使用?变量的概念是什么?作用范围是什么?变量间的算术运算怎么表示?你能很容易答出来吗 本 ...

  2. Shell脚本之编程规范和变量

    Shell脚本编程规划和变量 1.Shell脚本概述 2.Shell编程规划 3.重定向与管道 4.Shell脚本变量 1.Shell脚本概述 Shell的作用:充当"翻译官"的角 ...

  3. linux shell语言编程规范安全篇之通用原则【转】

    shell语言编程规范安全篇是针对bash语言编程中的数据校验.加密与解密.脚本执行.目录&文件操作等方面,描述可能导致安全漏洞或风险的常见编码错误.该规范基于业界最佳实践,并总结了公司内部的 ...

  4. SHELL编程规范与变量

    shell相比标准开发语言比如JAVA,C,C++来说还是比较简单的,其实就是一堆命令的集合而已,初学者从简单的shell脚本学起,至于shell编程还是要有编程思想在里面,因此,循序渐进很重要,先研 ...

  5. shell 脚本编程之特殊变量

    $0 当前脚本的文件名$n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2.$# 传递给脚本或函数的参数个数.$* 传递给脚本或函数的所有参数.$@ ...

  6. shell脚本编写规范和相关变量类型

    shell编程规范与变量    一.shell脚本概述    ① 什么是shell? Linux中有哪些shell?    ② shell的作用   ③ 用户的登录shell    ④ shell脚本 ...

  7. WindowsclientC/C++编程规范“建议”——前言

    前言 工作中接触了非常多编程规范.当中最有意思的是,公司近期公布了一版C/C++编程规范,然后我看到该规范的最后一段时,有这么一句:"该规范不适用于Windows平台开发".看来这 ...

  8. SAP官方发布的ABAP编程规范

    最近有朋友在公众号后台给我留言,"Jerry啊,你最近写的都是一些SAP研究院里面用到的新技术,能不能写点SAP传统的开发技术比如ABAP相关的东西"? 其实Jerry在刚开始写这 ...

  9. 【Shell脚本编程系列】Shell脚本开发的习惯和规范

    1.开头指定脚本解释器 #!/bin/sh或#!/bin/bash 2.开头加版本版权信息 #Date #Author #Mail #Function #Version 提示:可配置vim编辑文件时自 ...

随机推荐

  1. Java安全之反序列化回显与内存马

    Java安全之反序列化回显与内存马 0x00 前言 按照我个人的理解来说其实只要能拿到Request 和 Response对象即可进行回显的构造,当然这也是众多方式的一种.也是目前用的较多的方式.比如 ...

  2. 《机器学习Python实现_10_10_集成学习_xgboost_原理介绍及回归树的简单实现》

    一.简介 xgboost在集成学习中占有重要的一席之位,通常在各大竞赛中作为杀器使用,同时它在工业落地上也很方便,目前针对大数据领域也有各种分布式实现版本,比如xgboost4j-spark,xgbo ...

  3. 9、解决mstsc卡顿的问题:

    1.同时按住"win+r"键调出"运行",在方框内输入"cmd"后点击"确定"打开dos窗口: 2.在dos中输入&qu ...

  4. 浅读tomcat架构设计之tomcat生命周期(2)

    浅读tomcat架构设计和tomcat启动过程(1) https://www.cnblogs.com/piaomiaohongchen/p/14977272.html tomcat通过org.apac ...

  5. SpringMVC(6)数据验证

    在系列SpringMVC(4)数据绑定-1.SpringMVC(5)数据绑定-2中我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 -> 数据验证. ...

  6. 单选按钮(radio)的取值和点击事件

    笔记走一波:获取单选按钮(radio)的选中值,以及它的点击事件的实现 首先要引入Jquery <script type="text/javascript" src=&quo ...

  7. VLAN间路由

    三种方式 通过路由器 通过单臂路由(子接口) 通过三层设备三层交换机

  8. C# 8.0和.NET Core 3.0高级编程 分享笔记三:控制流程和转换类型

    控制流程和转换类型 本章的内容主要包括编写代码.对变量执行简单的操作.做出决策.重复执行语句块.将变量或表达式值从一种类型转换为另一种类型.处理异常以及在数值变量中检查溢出. 本章涵盖以下主题: 操作 ...

  9. 题解 guP1948 【[USACO08JAN]电话线Telephone Lines】

    二分+dij题目 首先读一遍题目,一定要仔细读(不要问我为什么,我就是受害者qwq 你会发现最终的费用是由最长的电话线决定的,而非电话线长度和. 至此就有了一个基本思路--枚举(二分)出可能的最长电话 ...

  10. Luogu P2754 星际转移问题

    Luogu P2754 星际转移问题 思路 首先,对于地球能否到达月球的问题,考虑使用并查集维护. 对于每艘飞船能够到达的站点,放进一个集合里,若两艘飞船的集合有交集,那么就合并两个集合,最后只要地球 ...