shell脚本前置基础

2024-09-02 19:04
文章标签 基础 shell 脚本 前置

本文主要是介绍shell脚本前置基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • shell脚本
    • 概念
    • 应用场景
    • 作用
    • Linux中的Shell(解释器)
    • 脚本构成
      • 1.脚本申明(解释器):
      • 2.注释信息:
      • 3.可执行语句:
    • 脚本的执行
      • 方法一
      • 方法二
        • ---source 点命令 .
          • 功能
      • 三个执行脚本文件命令
        • 区别
          • 子shell的概念(shell列表的理念)
            • 目的
            • 示例
    • 重定向操作
    • 变量
      • 变量的作用
      • 变量作用范围
        • 局部变量
        • 全局变量
        • 主要特点
        • 潜在的副作用
      • 变量的类型
      • 变量名
      • 变量值
      • 查看变量的值
      • ---readonly 命令设置只读变量

shell脚本

shell是应该程序,也是一个解释器,用于“翻译”各种环境(弱语言)

概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限
  • 可结合各种Shell控制语句以完成更复杂的操

应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

作用

  • 自动化运维
  • 批量化重复操作可以编写脚本结合计划任务自动周期运行
  • 减轻管理员工作量
  • 提高处理文本文件的速度
  • 避免配置出错

Linux中的Shell(解释器)

检查一下/etc/shells这个文件,里面就是Linux所包含的Shell

  • sh:UNIX最初使用的 shell)已经被bash所替换

  • bash:基准开GNU的框架下发展出的Shell的扩展

  • csh:语法有点类似于c语言的Shell

  • tcsh:整合了csh,提供更多的功能。

  • nologin:奇怪的shell,这个shell可以让用户无法登录主机。

  • zsh

  • fish

注:bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell

脚本构成

1.脚本申明(解释器):

#!/bin/bash:表示此行以下的代码语句是通过/bin/bash程序来解释执行

#!/bin/bash为默认解释器。

还有其它类型的解释器,比如 #!/usr/bin/python 、 #!/usr/bin/expect.

#! shebang ——》申明,此脚本使用哪个解释器环境/解释器类型

#/bin/bash 解释器类型

2.注释信息:

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

3.可执行语句:

比如echo命令,用于输出""之间的字符串

vim /root/first.sh

#!/bin/bash

#This is my first Shell-Script

cd /boot

echo"当前的目录位于:"
pwd
echo"其中以 vml 开头的文件包括:"

ls -lh vml*

脚本的执行

方法一

指定路径的命令,要求文件必须有 x权限

chmod +x /root/first.sh

指定绝对路径:/root/first.sh

指定相对路径:./first.sh

方法二

指定Shell来解释脚本,不要求文件必须有x权限

  • sh脚本路径:sh first.sh
  • source 脚本路径:.first.sh 或者 source first.sh
—source 点命令 .
功能

source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。因为linux所有的操作都会变成文件的格式存在。

生效范围是当前shell会话

三个执行脚本文件命令

  • source filename
  • sh filename
  • ./filename
区别
  • 当shell脚本具有可执行权限时,用sh filename与./filename是没有区别的。
    ./filename是因为当前目录没有在PATH中,所以".“是用来表示当前目录的。

  • sh 会重新建立一个子shell

子shell的概念(shell列表的理念)
目的

多进程并行处理任务

小括号()表示开启子shell列表

小括号中引用的命令表示嵌套子shell,(echo $BASH_SUBSHELL->查看当前子shell个数)

示例

(ls;echo $BASH_SUBSHELL)

也可以嵌套执行:

(ls(echo $BASH_SUBSHELL))
(ls(pwd(echo $BASH_SUBSHELL)))

以上操作为并行多进程处理任务

  • source 没有建立新的子shell。脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

重定向操作

类型操作符用途
重定向输入<从指定的文件读取数据
重定向输出>将标准输出结果 保存 到指定的文件,并且覆盖原有内容
>>将标准输出结果 追加 到指定的文件的尾部,不覆盖原有内容
重定向错误输出2>将错误信息 保存 到指定的文件,并且覆盖原有内容
2>>将错误信息 追加 到指定的文件的尾部,不覆盖原有内容
混合输出&>将标准输出、标准错误保存到同一文件中
2>&1将标准错误输出重定向到标准输出

变量

变量的作用

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

  • 变量名:使用固定的名称,由系统预设或用户定义
  • 变量值:能够根据用户设置、系统环境的变化而变化

变量作用范围

环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用于所有用户。

每个用户还有自己的独立配置文件(~/.bash profile)。可以用来长期变更或设置某个环境变量

局部变量

默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。

当进入子程序或新的子Shell环境时,局部变量将无法再使用。

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

格式1:expont 变量名

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

全局变量

在程序或脚本中定义的具有全局范围的变量。

这意味着全局变量在整个程序或脚本的不同部分都是可见和可访问的,而不仅限于特定的函数、方法或代码块。

主要特点

全局范围: 全局变量在整个程序或脚本的各个部分都是可见和可访问的。

持久性: 全局变量的生命周期与程序的执行时间相同。它们在程序启动时创建,在程序结束时销毁。

共享性: 全局变量可以在程序的不同函数或方法之间共享数据。这样,多个函数可以使用和修改相同的全局变量,

潜在的副作用

全局变量的使用可能导致副作用和潜在的复杂性。

因为全局变量是可访问的,所以它们可以被任何函数修改,

这可能导致程序状态的不确定性和难以调试的问题。

变量的类型

  • 自定义变量:由用户自己定义、修改和使用
  • 特殊变量:环境变量,只读变量,位置变量,预定义变量
环境变量:由系统提前创建,用来设置用户的工作环境
位置变量:用于将外部数据传递给脚本或程序,以便根据需要进行处理。 ($1 $2 )
预定义变量:通常由编程语言或脚本解释器提供,并根据需要自动设置和更新,不能修改"$*":把所有参数看成以空格分隔的一个字符串整体(单字符串)返回,代表"$1 $2 $3 $4"。
"$@":把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回,代表"$1" "$2" "$3" "$4"。$0:表示当前执行的脚本或命令的名称。
$#:表示命令或脚本要处理的参数的个数。	
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常被用于Shell脚本中return退出函数并返回的退出值。

变量名

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

  1. 不要使用系统的命令作为变量名
  2. 不要使用中文
  3. 不能特殊符号开头 可以用_来开头
  4. 在指定变量名的时候有一个默认的规则:计算机:computer 学生:student
  5. 要有注释,还要注意前后一致
  6. 只能包含字母、数字、下划线
  7. 严格区分大小写

变量值

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

int 整形: 1 2 13 444string 字符串: zhangsan  lisi  abc123布尔值: true   false  0 1——》判断的是指定条件的“真”or“假”,通常用于分支判断浮点flot: 1.1 2.2双精度浮点值: 1.2131txt: 文本类型

自定义变量

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

定义新的变量
格式:变量名=变量值
变量命名规则:以字母或下划线开头,区分大小写
product=benet

version=6.0
name="zhang san“

查看变量的值

格式:echo$变量名
echo $product
echo $product $version
echo ${product}40
${}是一种特殊的语法形式,用于获取变量的值或者对变量进行操作。
语法可以应用于任何变量名称,其中变量名称放在花括号中,例如 {}语法可以应用于任何变量名称,其中变量名称放在花括号中,例如 语法可以应用于任何变量名称,其中变量名称放在花括号中,例如{product},其中VAR是变量名

—readonly 命令设置只读变量

product=benetreadonly product		#设置为只读变量echo $productproduct=accp				#只读变量不可以被重新赋值unset product				#只读变量不可以被删除(需要强制),unset 命令用于删除常规变量

这篇关于shell脚本前置基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130801

相关文章

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片