【shell】shell结程规范与变量

news2024/9/26 3:27:21

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、shell脚本概述
    • 1.Shell脚本应用场景
    • 2.Shell的作用
    • 3.用户的登录Shell
  • 二、Shell编程规范
    • 1.she11脚本的构成
    • 2.运行shel1脚本
    • 3.重定向与管道操作
      • 1.交互式硬件设备
      • 2.重定向操作
      • 3.管道操作符号”|”
  • 三、Shell变量的作用、类型
    • 1.自定义变量
      • 1.定义一个新的变量
      • 2.赋值时使用引号
      • 3.变量的作用范围


一、shell脚本概述

Shell(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个"命今解释器"的角色,负责接收用户输入的操作指令(命令) 并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

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

1.Shell脚本应用场景

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

2.Shell的作用

Shell的作用一命解释器“翻译官”

  • 介于系统内核与用户之间,负责解释命令行
  • 自动化运维
  • 批量化重复操作可以编写脚本结合计划任务自动周期运行
  • 减轻管理员工作量
  • 提高处理文本文件的速度
  • 避免配置出错

Shell是一个面向字符串的编程语言,可以跟Python之类的其他语言配合起来,比如某个复杂的功能使用一个python脚本来实现,然后在shell中调用这个脚本实现较复杂的功能:或者反过来,在Python脚本中调用外部的Shell脚本来提高自动化的效率,也是可以的。

在这里插入图片描述

3.用户的登录Shell

  • 登录后默认使用的Shell程序,一般为 /bin/bash
  • 不同Shell的内部指令、运行环境等会有所区别
    在这里插入图片描述

二、Shell编程规范

1.she11脚本的构成

  • 1.脚本申明(解释器):若第一行为"#!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。
  • 2.注释信息:以"#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
  • 3.可执行语句:比如echo命令,用于输出""之间的字符串

##2.编写shell脚本的规范

1.脚本声明                   #!/bin/bash
2.注释信息                   行首以#号开头定义注释信息,被注释的行内容将不会被执行
3.可执行语句                 编写要执行的脚本代码

2.运行shel1脚本

1.用绝对/相对路径指定脚本文件运行,需要执行用户拥有执行权限x,脚本会在子shell环境中运行
2.用 bash/sh 程序指定脚本文件运行,不需要执行权限,脚本会在子shell环境中运行
3.用 source/,指定脚本文件运行,脚本会在当前shell环境中运行(会影响当前所在目录、变量的值 等因素)

3.重定向与管道操作

1.交互式硬件设备

  • 标准输入: 从该设备接收用户输入的数据
  • 标准输出: 通过该设备向用户输出数据
  • 标准错误: 通过该设备报告执行出错信息
类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

2.重定向操作

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

3.管道操作符号”|”

将左侧的命令输出结果,作为右侧命令的处理象

cmd1 cmd2 [... cmdn]

三、Shell变量的作用、类型

变量的作用

  • 用来存放系统和用户需要使用的特定参数 (值)
  • 变量名!使用固定的名称,由系统预设或用户定义
  • 变量值:能够根据用户设置、系统环境的变化而变化

变量的类型

  • 自定义变量: 由用户自己定义、修改和使用
  • 特殊变量:环境变量,只读变量,位置变量,预定义变量

1.自定义变量

1.定义一个新的变量

  • 变量名以字母或下划线开头,区分大小写,建议全大
变量名=变量值

2.赋值时使用引号

  • 双引号: 允许通过$符号引用其他变量值
  • 单引号: 禁止引用其他变量值,$视为普通字符
  • 反撇号: 命令替换,提取命令执行后的输出结果

从键盘输入内容为变量赋值

read [-p“提示信息”] 变量名

输出变量的值

echo $[变量名]

3.变量的作用范围

设置变量的作用范围

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习CTF一定要知道的网站!快快收藏!

今天在这里给大家介绍一些好用的学习网站&#xff1a; 首先是CTF做题平台&#xff1a; •BUUCTF •攻防世界 •ctf.show •catf1ag.cn •ctfhub.com •ctf.wgpsec.org •ctf-wiki.org •ctftime.org 学习论坛&#xff1a; •https://www.52pojie.cn/ •https://www.freebuf.…

【nvm 安装】使用nvm管理node版本,安装步骤

一、下载nvm 下载链接&#xff1a;Releases coreybutler/nvm-windows GitHub 建议下载安装版的&#xff0c;非安装版还需要额外配置环境变量。 二、安装 注意 &#xff1a; 都在说安装之前需要删除node版本&#xff0c;避免冲突&#xff0c;很听话的我删除了&#xff0c;…

每日学术速递5.4

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.IndoorSim-to-OutdoorReal: Learning to Navigate Outdoors without any Outdoor Experience 标题&#xff1a;IndoorSim-to-OutdoorReal&#xff1a;在没有任何户外经验的情况下学…

Linux系统中ARMv8架构u-boot启动流程分析

目录 ​ 本文基于 armv8 架构来对 u-boot 进行启动流程分析。 1 概述 2 armv8 u-boot的启动 3 u-boot源码整体结构和一些编译配置方式 3.1 编译配置方式 3.2 u-boot源码结构 4 u-boot armv8链接脚本 4.1 u-boot.lds 4.2 u-boot-spl.lds 本文基于 armv8 架构来对 u-bo…

Android LifecycleService

监听Service的生命周期-LifecycleService 为了方便我们对Service生命周期的监听&#xff0c;Android提供了一个名为LifecycleService的类&#xff0c;让该类继承自Service&#xff0c;并实现LifecycleOwner接口。 /*** A Service that is also a {link LifecycleOwner}.*/ pu…

项目实战——获取树形结构

获取树形结构 一、背景介绍二、 思路和方案方案一&#xff1a;使用递归查询的方式并构建树形结构方案二&#xff1a;使用临时表的方式构建树形结构使用临时表的优缺点 三、过程项目案例核心代码 四、总结五、升华 一、背景介绍 我们在开发中时常会遇到需要用到树形结构这种表示…

1分钟学会、3分钟上手、5分钟应用,快速上手责任链框架详解 | 京东云技术团队

作者&#xff1a;京东物流 覃玉杰 1. pie 简介 责任链模式是开发过程中常用的一种设计模式&#xff0c;在SpringMVC、Netty等许多框架中均有实现。我们日常的开发中如果要使用责任链模式&#xff0c;通常需要自己来实现&#xff0c;但自己临时实现的责任链既不通用&#xff0…

解决安装nrm,执行nrm ls时出现的const open=require(‘open’)问题

最开始安装的淘宝镜像源为npm config set registryhttps ://registry.npm.taobao.org/&#xff0c;后来看到镜像源变了&#xff0c;就换了下面的&#xff0c; 下载新的npm淘宝镜像资源包npm config set registry http://registry.npmmirror.com 查看&#xff0c;安装成功&…

【c语言】字符串的基本概念 | 字符串存储原理

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

Spring常用注解总结

目录 一、前言1、xml和注解的最佳实践&#xff1a;2、使用注解唯一需要注意的就是&#xff0c;必须开启注解的支持&#xff1a; 二、Spring的常用注解1、给容器中注入组件2、注入bean的注解3、JsonIgnore4、初始化和销毁方法5、Java配置类相关注解6、切面&#xff08;AOP&#…

DNS资源记录详解

资源记录&#xff08;resourse record&#xff09;就是域名服务器保存的记录&#xff0c;也是解析器请求的内容&#xff0c;资源记录保存在zone文件中。域&#xff08;domain&#xff09;&#xff1a;以 www.baidu.com 为例&#xff0c;com是一个域。baidu.com是一个域&#xf…

Selenium:三种等待方式

目录 一、显示等待 二、隐式等待 三、强制等待 UI自动化测试&#xff0c;大多都是通过定位页面元素来模拟实际的生产场景操作。但在编写自动化测试脚本中&#xff0c;经常出现元素定位不到的情况&#xff0c;究其原因&#xff0c;无非两种情况&#xff1a;1、有frame&#x…

Unity 光照

\\\\\\\ Unity烘焙&#xff08;Baking&#xff09;是指将场景中的动态光照转换为静态贴图。在烘焙过程中&#xff0c;Unity会将场景中的光源、材质和对象等信息计算出来&#xff0c;并存储为贴图。当玩家进入场景时&#xff0c;Unity只需要读取这些预计算好的贴图或者数据文件&…

2023年计算机视觉与模式识别国际会议(CCVPR 2023)

会议简介 Brief Introduction 2023年计算机视觉与模式识别国际会议(CCVPR 2023) 会议时间&#xff1a;2023年9月15日-17日 召开地点&#xff1a;英国牛津 大会官网&#xff1a;www.ccvpr.org 计算机视觉技术与模式识别是现代科学中备受关注的热点技术&#xff0c;它的革新对各行…

Monorepo开发策略详解

目录 一&#xff1a;什么是 Monorepo&#xff1f; 二&#xff1a;Monorepo 和其他结构的区别&#xff1a; 三&#xff1a;Monorepo的优缺点 3.1.优点 3.2.缺点 四&#xff1a;如何使用Monorepo 一&#xff1a;什么是 Monorepo&#xff1f; Monorepo 是一种将多个项目存放…

【iOS】—— RunLoop初学

RunLoop 文章目录 RunLoopRunLoop简介RunLoop基本使用Runloop伪代码Runloop模型图 Runloop对象Runloop对象的获取_CFRunLoopGet0方法 RunLoop的相关类RunLoop相关类的实现CFRunLoopRefCFRunLoopModeRef五种运行模式CommonModes什么是Mode Item&#xff1f;Mode到底包含哪些类型…

【SWAT水文模型】SWAT水文模型建立及应用第四期: 气象数据的准备(中国区域高精度同化气象站CMADS)

SWAT水文模型建立及应用&#xff1a; 气象数据的准备 1 简介2 气象数据的准备&#xff08;中国区域高精度同化气象站CMADS&#xff09;2.1 数据说明2.2 数据下载 3 CMADS 数据集SWAT子集使用说明3.1 SWAT2009版本3.2 SWAT2012版本 参考 本博客主要介绍气象数据的准备&#xff0…

HulaCWMS呼啦企业网站管理系统 v3.0.4

源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/87630654 HulaCWMS(呼啦企业网站管理系统)是基于ThinkPHP5框架开发&#xff0c;安全高效&#xff0c;包括ThinkPHP5的所有特性。专注于企业、政府单位网站建设&#xff0c;以免费开源的方式&#xff0c;帮…

python - 模块使用详解

前言 Python有非常强大的第三方库&#xff0c;也有非常多的内置模块帮助开发人员实现某些功能&#xff0c;无需开发人员自己造轮子。本文介绍Python的模块。 什么是模块 模块简单来说就是一系列功能的集合体&#xff0c;如果将程序的开发比喻成拼图&#xff0c;模块就是各种…

读懂海尔智家大脑:深度体验的本质是深度生活

了解科技行业的读者&#xff0c;应该都对“大脑”这个名词不陌生。 “黑灯工厂”里指挥生产的“工业大脑”&#xff0c;繁忙机场里运筹帷幄的“航空大脑”&#xff0c;还有智慧城市建设的灵魂“城市大脑”…… 如果家也有一颗总揽全局的大脑&#xff0c;生活会发生什么改变呢&a…