当前位置: 首页 > article >正文

一、shell脚本基础

shell的含义

shell是什么?

shell是人和计算机内核之间的中介

把人类的语言翻译成计算机能够识别的语言,然后让内核来处理。

内核完成之后要把结果反馈给用户,要把计算机的翻译成人类能够识别的语言。

shell类型

bash,主流,Linux系统默认的

sh bash,sh的升级版

csh,类C语言的shell

tcsh,csh的升级版

nologin,禁止用户登录,也是一种shell

shell脚本

shell脚本的含义和作用

shell脚本是扩建语言,或者是动态语言,是一种编程的语言。控制软件的应用程序,只要在被调用时,才会执行。

  • 本:代码是保存在文本当中,特定条件(运行代码的条件)
  • 脚:把保存在文本中的代码执行起来

shell脚本的作用

自动化运维

批量化重复操作可以通过脚本和计划任务来进行自动运行

减轻了管理人员工作量

避免配置出错

shell脚本的结构

脚本文件格式

脚本文件:默认以 .sh 为结尾的文件

脚本文件内容:

脚本运行格式

1、bash:调试模式,创建一个子shell环境,只在这个子环境当中运行,不会”真正"执行。

     source:点命令,真正的执行代码

可以看出我们使用source的命令运行脚本后,所处的目录不在shcode下,而在boot目录下,这是因为source真正执行了一遍脚本,cd到了 /boot目录下。

2、赋权执行

使用路径执行,如在当前路./或者绝对路径,绝对路径必须要赋权。

3、定时任务,必须使用绝对路径

重定向

重定向就是把这些信息保存到指定的文件当中

1、重定向输入:<,从指定文件中获取内容

2、重定向输出:>,只能把标准输入保存到文件当中,如果原文有内容会直接覆盖。

                           >>,把标准输入保存到文件当中,不会覆盖原文,而是在原文中追加。

3、重定向错误输出:2>,将错误的信息保存到指定文件中,会覆盖原文内容。

                                  2>>,将错误的信息保存到指定文件中,不会覆盖而是后行追加。

4、混合输出:&>将标准输出、标准错误保存到同一文件中,覆盖原内容

                        &>>将标准输出、标准错误保存到同一文件当中,内容不会被覆盖而是在行后追加

变量

变量用来存放系统和用户需要使用的特定的参数

变量名

系统定义好的,每个用户都可以使用(全局变量),一般情况下是不可以修改的。

自定义变量名:

  • 不要使用系统的命令作为变量名称
  • 不要使用中文
  • 变量名不能使用特殊符号来开头,除下划线
  • 定义变量,一定要时字母开头,不能以数字开头
  • 变量名最好是对应的名称的英文全称或者简写

变量值

  • int,整数,没有小数点
  • string,字符串,字母或者数字组成,用引号引起来
  • 布尔,true/false,为真还是假,一般用于条件判断的返回值
  • 浮点,1.23

打印变量值

echo  $变量名

echo   "${变量名}添加内容"

强弱引用

赋值时无所谓,打印时是有区别的。

强引用:单引号,打印变量时,就是字符串的本身,不再代表变量的值

弱引用:双引号,打印变量时,加上双引号就是变量的值

自定义变量read

如我们创建自定义变量a和b,运行脚本,赋予a为1,b为2,结果如下

变量的作用范围

全局变量

全局变量(主要是系统定义,不能改的)

在全局配置文件 /etc/profile 中修改,export  变量名=值

副作用:所有用户都可以使用,一旦有改动,增加了复杂性。

环境变量

全局变量的一种,系统创建的,设置用户的工作环境

由系统维护,一般用户是不去修改的,让所有人都可以自动识别到(自动补齐)

位置变量

脚本外传参,相当于另一种自定义变量,表示未赋值,如$1。

预定义变量$@#?

也是另一种自定义变量,脚本解释器提供的,或者是编程语言自带的,不能修改。

$*:表示命令或者脚本需要处理的参数,区别在于处理的方式不同,"$*",会把参数当作一个整体进行处理;不加双引号,会把参数一个一个处理。

$@:表示命令或者脚本需要处理的参数,加不加双引号,都会把参数一个一个处理。

$#:记录传递给脚本参数的个数

$?:记录的上一次执行命令的返回码,用来判断上一次执行命令是否成功

0和非0,0表示上一次命令执行成功,其他都是失败

由上可以看出,$*加双引号输出是一个整体,不加则是一个一个输出。

由上可以看出,$#是记录传递给脚本参数的个数

由上可以看出,0代表上一次命令ls执行成功,而127则是表示上一次错误的命令执行是失败的。

变量的运算

运算符:

+     -     *     /     %(加减乘除 取余)

整数运算

c=$(($a*$b))                    echo $c(要有双括号)

i=$(expr  12   \*   5)         echo $i( * 和 / 前面需要加 \ )

let  d=12+10                   echo $d

非整数运算bc


http://www.kler.cn/a/399826.html

相关文章:

  • Quartus+Nios II for eclipse问题合集
  • Acrobat Pro DC 2023(pdf免费转化word)
  • 学了Arcgis的水文分析——捕捉倾泻点,河流提取与河网分级,3D图层转要素失败的解决方法,测量学综合实习网站存着
  • 模糊神经网络学习方法探讨
  • 6.584-Lab1:MapReduce
  • python核心语法
  • 流量模型 -20241118
  • OPENSSL加密与解密
  • 分布式多级缓存之安装和配置Canal
  • 动态规划 —— 子数组系列-最长湍流子数组
  • OpenCV 图片处理与绘制
  • 联合查询(查询)
  • 跨越网络边界:IPv6与零信任架构的深度融合
  • 【Java 学习】数据类型、变量、运算符、条件控制语句
  • javaScript交互案例2
  • 2分钟在阿里云ECS控制台部署个人应用(图文示例)
  • c++多态(深度刨析)
  • Vue中Select选择器el-option实现动态多选
  • 为什么VScode不能连服务器,MobaXterm可以连
  • vulnhub靶场-tomato
  • 【MySQL】全面学习数据库查询技巧:查询指令深度学习指南
  • php代码审计-动态调试-未授权挖掘
  • 在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】
  • 使用golang启动一个http代理
  • Vue之el-date-picker日期选择器标签—选择日期范围,数据格式:yyyy-MM-dd HH:mm:ss,设置默认时间:HH:mm:ss
  • PyTorch数据集方法