shell脚本编程规范与变量

news2025/8/13 20:11:15

目录

  • 一.shell脚本的概述
    • 2.1 shell的作用
  • 三. shell脚本的作用
    • 3.1 编写第一个shell脚本
      • 3.1.1 Shell 脚本的构成:
      • 3.1.2 脚本的执行方式
  • 三. 重定向与管道符操作
    • 3.2 重定向操作
    • 3.2 管道操作符号
  • 四. shell的变量的作用,类型
    • 4.1 定义变量
    • 4.2 命名的规则
    • 4.3 全局变量设置
    • 4.4 整数变量的运算
    • 4.5 特殊的环境变量
    • 4.6 只读变量与删除变量
    • 4.7 位置变量
    • 4.8 预定义变量

一.shell脚本的概述

在这里插入图片描述

2.1 shell的作用

在这里插入图片描述
什么是shell?

  • 就是与内核沟通的界面、应用程序等等。比如你要播放音乐,你的计算机通过你在shel1输入的打开音乐的命令,shell在
    告诉操作系统的内核用户希望打开音乐,内核在通过cpu调度、内存管理、磁盘输入输出等工作,将硬件调动,这时硬件声卡才会工作,硬件才是灾
    际的工作者
  • Shell(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个""命令解释器"的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

在这里插入图片描述

cat /etc/shells 查看可用shell程序

在这里插入图片描述
注:bash (/bin/bash)是目前大多数linux版本中默认的shell

三. shell脚本的作用

shell脚本的作用

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

补充:计算机语言分为面向对象与面向过程

面向对象:JAVA PYTHON C++ GO
面向过程:C shell

强类型语言: JAVA C++ C GO 编译型语言。执行前要先编译,运行速度快效率高
弱类型语言:PYTHON shell PHP 解释性语言,不需要编译即可直接执行。常用
于做脚本

3.1 编写第一个shell脚本

在这里插入图片描述

3.1.1 Shell 脚本的构成:

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

例如:
在这里插入图片描述

3.1.2 脚本的执行方式

1. 需要加执行权限的方式
使用绝对或相对路径来执行脚本 需要添加执行权限
在这里插入图片描述2. 不添加执行权限执行
使用bash或者sh来执行脚本

在这里插入图片描述3. source或 . 来执行脚本,此执行方式也不需要权限(不建议使用)

在这里插入图片描述注意
绝对路径/相对路径 ,bash/sh 执行脚本不会影响当前环境 ,他会先打开一个子bash环境执行,执行完之后再次回到原来的bash环境中、

source和. 执行脚本时 ,会影响当前的环境,他会在当前shell环境中运行(会影响当前所在目录和变量的值灯因素,不建议使用)

三. 重定向与管道符操作

在这里插入图片描述

3.2 重定向操作

在这里插入图片描述

< 重定向输入

在这里插入图片描述

> 重定向输出

在这里插入图片描述

>> 重定向追加

在这里插入图片描述

2> 错误内容的输出

在这里插入图片描述

2>> 将错误的内容追加到文件中

在这里插入图片描述

&> 混合输出,将标准输出,标准错误的内容保存到同一个文件

在这里插入图片描述

ls /opt /xxxxx 1>txt 2>&1

在这里插入图片描述

3.2 管道操作符号

在这里插入图片描述在这里插入图片描述

四. shell的变量的作用,类型

在这里插入图片描述

4.1 定义变量

在这里插入图片描述变量名要以字母或下划线开头 ,但不能以数字或其他符号开头
在这里插入图片描述
在这里插入图片描述

4.2 命名的规则

1. { } 定义变量范围,确定一个变量的长度
2. ’ ’ 在单引号中不识别变量
3. " " 双引号识别变量,并保留格式
4. `` 反撇号等于$( ) 调用命令的执行的输出结果

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

4.3 全局变量设置

在这里插入图片描述在这里插入图片描述但是我们再命令行输出export他只是临时的,当我们重启后就消失了,所以我们需要再/etc/profile中修改他的永久全局变量

在这里插入图片描述
在这里插入图片描述

4.4 整数变量的运算

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

4.5 特殊的环境变量

在这里插入图片描述在这里插入图片描述

若我想系统能够自动设别到我的脚本文件此时就可以将他们加入到我都PATH环境变量中

方法一:
创建软连接指向PATH环境变量的目录中
在这里插入图片描述
方法二:
创建新的PATH环境变量

编辑/etc/profile 全局环境变量
在这里插入图片描述
在这里插入图片描述

4.6 只读变量与删除变量

在这里插入图片描述

4.7 位置变量

在这里插入图片描述
$0 代表脚本本身
$1 - $9 代表第几个位置参数

在这里插入图片描述

4.8 预定义变量

$@ 将所有位置参数看作独立的个体返回
$* 将所有位置参数看作一个整体返回
$0 查看当前脚本的名称
$# 返回位置参数的总个数
$? 判断上个命令是否执行成功,成功返回0 其他则为失败

当 $@ 和 $ 有双引号时区别就能看出来了*

当它没有双引号时
在这里插入图片描述在这里插入图片描述
当有双引号时

在这里插入图片描述在这里插入图片描述

$? 判断输入的命令是否正确执行

在这里插入图片描述

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

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

相关文章

辛弃疾最有代表性的十首词

辛弃疾的词&#xff0c;风格多样&#xff0c;题材广阔&#xff0c;几乎涉及到生活中的各个方面&#xff0c;从爱国情怀到日常生活&#xff0c;甚至连戒酒这种事都能写入词中。辛弃疾也是两宋词人中&#xff0c;存词最多的作家之一&#xff0c;现存的六百多首作品。 辛弃疾的词…

【数据结构:线性表】单链表

在学习了顺序表&#xff0c;我们可能会对其有一些思考&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度为O(N)增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容…

第四次工业革命的里程碑-chatgpt

文章目录 一、 介绍二、 训练数据方法、数据来源三、 能帮你做什么做表格论文降重写文案、周报写代码改bug写注释写作业制作游戏策划方案 四、 搭建自己的chatgpt方法五、 安全、安全试用chatgpt的方法六、 几款类似chatgpt的工具七、 优点八、 缺点九、下一步的期待十、 总结 …

vue中vue-cli项目各种报错

目录 sockjs.js报错 [WDS] Disconnected报错 假如有以上报错&#xff0c;首先看下index.html有没有这句 <meta http-equiv"Content-Security-Policy" content"upgrade-insecure-requests"> 是限制资源获取&#xff1a;限制网页当中一系列的资源获…

OkHttp3源码解析 - 拦截器

系列文章目录 第一章 OkHttp3源码解析 - 请求流程 第二章 OkHttp3源码解析 - 拦截器 第三章 OkHttp3源码解析 - 连接机制和缓存机制 文章目录 系列文章目录前言一、五大内置拦截器二、拦截器分发流程1.RetryAndFollowUpInterceptor-重试重定向拦截器2.BridgeInterceptor-桥接拦…

用友BIP助力中国领先企业数智化国产替代

随着数字经济的快速发展&#xff0c;软件的重要性日益凸显。软件是新一代信息技术的灵魂&#xff0c;已经成为数字中国、制造强国、网络强国建设的关键支撑。面对全球竞争新格局&#xff0c;关键软件自主创新与国产化替代已迫在眉睫。 助力华为成功替换国外ERP系统 在此背景下…

android studio Switch按钮

1.添加按钮 <LinearLayoutandroid:layout_width"match_parent"android:layout_height"wrap_content"android:orientation"horizontal"><TextViewandroid:id"id/tv1"android:layout_width"0dp"android:layout_weig…

JavaScript如何实现继承?

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;JavaScript &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 继承JavaScript如何实现继承&#xff1f;原型链继承构造函数继承组合继承原型式…

纽扣电池出口欧盟ce认证EN62133测试项目

纽扣电池CE证办理&#xff0c;锂电CE证旨在提高环境性能的2006/66/EC入了电池和 蓄电池中0.0005%汞和便携式电池和蓄电池中0.002%镉的限值。自2013/56/EU 修订了2006/66/EC&#xff0c;2013/56/EU(修订2006/66/)规定&#xff0c;2015年10月1日 起&#xff0c;纽扣电池中汞的…

从零基础到条码高手:傻瓜式操作,告别excel、AI和PS的烦恼

条形码是一种用于商品识别、库存管理等方面的编码标识系统&#xff0c;它是通过将数字和字符以特定的图案排列组合起来&#xff0c;从而形成一组能被机器扫描和识别的条纹图案。 通常情况下&#xff0c;条形码的生成可以分为如下几个步骤&#xff1a; 1、编号&#xff1a;首先…

【神秘题 整数溢出】牛客小白月赛71 C-猫猫与数列

被教育了 学到了一些只有我不知道的常识 C-猫猫与数列_牛客小白月赛71(重现赛) (nowcoder.com) 题意&#xff1a; 思路&#xff1a; 直接模拟即可 值得注意的是&#xff0c;他在算数列的过程中可能会爆long long&#xff0c;因此在算的时候注意开__int128&#xff0c;这样…

微信小程序 开发中的问题(simba_wx)

目录 一、[将 proto 文件转成 json 文件](https://blog.csdn.net/wzxzRoad/article/details/129300513)二、[使用 test.json 文件](https://blog.csdn.net/wzxzRoad/article/details/129300513)三、[微信小程序插件网址](https://ext.dcloud.net.cn/)四、[vant-weapp网址](http…

为什么停更ROS2机器人课程-2023-

机器人工匠阿杰肺腑之言&#xff1a; 我放弃了ROS2课程 真正的危机不是同行竞争&#xff0c;比如教育从业者相互竞争不会催生ChatGPT…… 技术变革的突破式发展通常是新势力带来的而非传统行业的升级改革。 2013年也就是10年前在当时主流视频网站开启分享&#xff1a; 比如 …

电脑开机后出现哭脸错误无法启动解决方法

电脑开机后出现哭脸错误无法启动解决方法。有用户安装好电脑系统之后&#xff0c;遇到了哭脸错误的情况。出现这样的错误原因有很多。如果你无法找到问题的根源的话&#xff0c;其实都是可以通过U盘重装系统的方法来解决的&#xff1f;接下来我们一起来看看以下的操作教学吧。 …

BM39-序列化二叉树

题目 请实现两个函数&#xff0c;分别用来序列化和反序列化二叉树&#xff0c;不对序列化之后的字符串进行约束&#xff0c;但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化(Serialize)是指&#xff1a;把一棵二叉树按照某种遍历方式的结…

flv怎么转换成mp4?这3种方法总有适合你的

flv怎么转换成mp4&#xff1f;首先我们得知道flv为什么转换成mp4&#xff1f;FLV和MP4都是常用的视频格式&#xff0c;其中FLV格式在以前的一些互联网应用中得到了广泛使用。但随着技术的发展和设备的普及&#xff0c;MP4格式逐渐成为了主流的视频格式。因此&#xff0c;将FLV格…

jQuery 在图片和文字中插入内容(多种情况考虑)

昨天接到一个新的需要&#xff0c;在后台文章编辑器中&#xff0c;每一个文章的正文前面&#xff0c;可以单独添加一个电头字段&#xff0c;但是如果在富文本编辑器中最上面就添加图片的话&#xff0c;图片就会把电头和正文中的文字给隔开。需要做的是获取到电头字段&#xff0…

一款纯Web化免费SQL工具,重新定义数据库管理

SQL Studio是一款由麦聪软件研发的多数据库管理工具&#xff0c;提供Windows、Linux 和 MacOS三种版本的软件包&#xff0c;支持中英文两种语言。SQL Studio是用Java编写的&#xff0c;默认使用 JDK 8进行编译。 下载看这里: [SQLStudio] (http://www.maicongs.com/#/home/web)…

shell脚本function传参的使用

这里直接上操作来说明function 的传参 新建一个脚本 vi 1.sh #!/bin/bash function check_a {echo $2echo $3echo "this is check_a" } function check_b {echo $2echo "this is check_b" } $1 #$1作为选择执行哪个function的参数 执行以下这个脚本传…

测试不够快?试试这招!让pytest多进程/多线程执行测试用例,轻松提升测试效率!

目录&#xff1a;导读 前言&#xff1a; 多进程执行用例之pytest-xdist pytest-xdist分布式测试的原理&#xff1a; pytest-xdist分布式测试的流程&#xff1a; 多线程执行用例之pytest-parallel 常用参数配置 pytest-parallel与pytest-xdist对比说明: 结语 前言&#…