shell脚本(1)

news2024/11/16 16:34:53

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

感谢泷羽sec 团队的教学
视频地址:shell脚本(1)脚本创建执行与变量使用_哔哩哔哩_bilibili

本文主要讲解shell脚本的创建、执行和变量的使用。

一、脚本执行

1. 创建和运行脚本的基本方法
  1. 创建脚本文件:

    touch 1.sh 

  2. 编辑脚本内容:

    vim 1.sh
    #!/bin/bash echo "hello world"
    • 解释器声明:
      • #!/bin/bash、#!/bin/dash、#!/bin/sh 都是用来指定脚本的解释器。
      • ls -l /bin/sh 通常会发现 /bin/sh 链接到 dash,所以即使用 sh,多数情况仍是调用 dash。

  1. 赋予执行权限并运行脚本:

    chmod 777 1.sh 
    ./1.sh

2. 使用解释器直接执行脚本
  • 无需赋予执行权限,可以用解释器直接运行:
    sh 1.sh 
    bash 1.sh 
    dash 1.sh
    注意:需指定脚本路径或在当前目录下执行。如 /root/1.sh

3. 使用 source 命令执行脚本
  • source 命令在当前 shell 中执行脚本,不会启动子进程:
    source 1.sh

  • 特点:
    • 对脚本中的变量定义和修改会直接影响当前 shell 环境。
    • 在一些终端工具中,source 命令的提示颜色会加深以标注。

二、变量的使用

1. 声明和定义变量
  • 变量名规则:
    • 由字母、数字、下划线组成,不能以数字开头。
    • 避免在变量名中使用空格。
  • 示例:
    name='GGB' 
    age=18

2. 使用变量
  • 打印变量:
    echo my name is $name, my age is $age years old
    echo "my name is $name, my age is $age years old"
    
    
    加不加引号,打印结果都一样

  • 加引号和不加引号的区别:
    • 双引号:
      echo "my name is $name, my age is $age years old"

      效果: 变量会被替换为实际值。
    • 单引号:
      ​echo 'my name is $name, my age is $age years old'

      效果: 会直接输出 $name 和 $age,不解析变量。
3. 变量拼接
  • 直接拼接:
    echo "my name is $name,my age is $ageyears old"

    问题: $ageyears 被视为一个整体变量名,因为变量ageyears没有被定义,因此打印为空。
  • 使用花括号:
    echo "my name is $name,my age is ${age}years old"

    效果: 正确拼接,输出 my name is GGB, my age is 18years old。
  • 加双引号:
    echo "my name is "$name", my age is "$age" years old"

    效果: 与花括号效果相同。
4. 查看定义的变量
  • 查看当前 shell 的所有变量:
    set

  • 查看特定变量:
    set | grep name

5. 删除变量
  • 使用 unset 删除变量:
    unset ggb

    删除后变量值为空。

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

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

相关文章

测试实项中的偶必现难测bug--互斥逻辑异常

问题: 今天线上出了一个很奇怪的问题,看现象和接口是因为数据问题导致app模块奔溃 初步排查数据恢复后还是出现了数据重复的问题,查看后台实际只有一条数据,但是显示在app却出现了两条一模一样的置顶数据 排查: 1、顺着这个逻辑,我们准备在预发复现这个场景,先是cop…

解决MySQL中整型字段条件判断禁用不生效的问题

MySQL中,当尝试将整数与字符串进行比较时,数据库可能会尝试将字符串转换为整数。在这种情况下,空字符串会被转换为整数0,所以0 ! 会被解释为0 ! 0,结果自然是false。 在开发过程中,我们经常需要对数据库中的…

Flink1.19编译并Standalone模式本地运行

1.首先下载源码 2.本地运行 新建local_conf和local_lib文件夹,并且将编译后的文件放入对应的目录 2.1 启动前参数配置 2.1.2 StandaloneSessionClusterEntrypoint启动参数修改 2.1.3 TaskManagerRunner启动参数修改 和StandaloneSessionClusterEntrypoint一样修改…

创建vue插件,发布npm

开发步骤:1.创建一个vue项目,2.开发一个组件。 3.注册成插件。 4.vite和package.json配置。5.发布到npm 1.创建一个vue项目 npm create vuelatest 生成了vue项目之后,得到了以下结构。 在src下创建个plugins目录。用于存放开发的…

【深度学习】LSTM、BiLSTM详解

文章目录 1. LSTM简介:2. LSTM结构图:3. 单层LSTM详解4. 双层LSTM详解5. BiLSTM6. Pytorch实现LSTM示例7. nn.LSTM参数详解 1. LSTM简介: LSTM是一种循环神经网络,它可以处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM通…

Queuing 表(buffer表)的优化实践 | OceanBase 性能优化实践

案例问题描述 该案例来自一个金融行业客户的问题:他们发现某个应用对一个数据量相对较小的表(仅包含数千条记录)访问时,频繁遇到性能下降的情况。为解决此问题,客户向我们求助进行分析。我们发现这张表有频繁的批量插…

【视觉SLAM】4b-特征点法估计相机运动之PnP 3D-2D

文章目录 1 问题引入2 求解P3P 1 问题引入 透视n点(Perspective-n-Point,PnP)问题是计算机视觉领域的经典问题,用于求解3D-2D的点运动。换句话说,当知道n个3D空间点坐标以及它们在图像上的投影点坐标时,可…

SpringBoot多环境+docker集成企业微信会话存档sdk

SpringBoot多环境docker集成企业微信会话存档sdk 文章来自于 https://developer.work.weixin.qq.com/community/article/detail?content_id16529801754907176021 SpringBoot多环境docker集成企业微信会话存档sdk 对于现在基本流行的springboot环境,官方文档真是比…

DAY64||dijkstra(堆优化版)精讲 ||Bellman_ford 算法精讲

dijkstra(堆优化版)精讲 题目如上题47. 参加科学大会(第六期模拟笔试) 邻接表 本题使用邻接表解决问题。 邻接表的优点: 对于稀疏图的存储,只需要存储边,空间利用率高遍历节点链接情况相对容…

在openi平台 基于华为顶级深度计算平台 openmind 动手实践

大家可能一直疑问,到底大模型在哪里有用。 本人从事的大模型有几个方向的业务。 基于生成式语言模型的海事航行警告结构化解析。 基于生成式语言模型的航空航行警告结构化解析。 基于生成式生物序列(蛋白质、有机物、rna、dna、mrna)的多模态…

Figma汉化:提升设计效率,降低沟通成本

在UI设计领域,Figma因其强大的功能而广受欢迎,但全英文界面对于国内设计师来说是一个不小的挑战。幸运的是,通过Figma汉化插件,我们可以克服语言障碍。以下是两种获取和安装Figma汉化插件的方法,旨在帮助国内的UI设计师…

深度学习-卷积神经网络CNN

案例-图像分类 网络结构: 卷积BN激活池化 数据集介绍 CIFAR-10数据集5万张训练图像、1万张测试图像、10个类别、每个类别有6k个图像,图像大小32323。下图列举了10个类,每一类随机展示了10张图片: 特征图计算 在卷积层和池化层结束后, 将特征…

关于adb shell登录开发板后terminal显示不完整

现象 今天有个同事跟我说,adb shell 登录开发板后,终端显示不完整,超出边界后就会出现奇怪的问题,比如字符覆盖显示等。如下图所示。 正常情况下应该如下图所示: 很明显,第一张图的显示区域只有完整区域…

【论文分享】三维景观格局如何影响城市居民的情绪

城市景观对居民情绪的影响是近些年来讨论的热门话题之一,现有的研究主要以遥感影像为数据来源,进行二维图像-数据分析,其量化结果精确度有限。本文引入了三维景观格局的研究模型,通过街景图片及网络发帖信息补充图像及数据来源&am…

ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF

ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定,堪称科研神器。 功能介绍 我们以3.5版本为例,ChatGPT学术版总共分为五个区域:输入控制区、输出对话区、基础功能区、函数插件…

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言,简称Golang,是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计,并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标,…

一、HTML

一、基础概念 1、浏览器相关知识 这五个浏览器市场份额都非常大,且都有自己的内核。 什么是内核: 内核是浏览器的核心,用于处理浏览器所得到的各种资源。 例如,服务器发送图片、视频、音频的资源,浏览…

VRRP HSRP GLBP 三者区别

1. VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议) 标准协议:VRRP 是一种开放标准协议(RFC 5798),因此支持的厂商较多,通常用于多种网络设备中。主备模式:…

Elasticsearch:管理和排除 Elasticsearch 内存故障

作者:来自 Elastic Stef Nestor 随着 Elastic Cloud 提供可观察性、安全性和搜索等解决方案,我们将使用 Elastic Cloud 的用户范围从完整的运营团队扩大到包括数据工程师、安全团队和顾问。作为 Elastic 支持代表,我很乐意与各种各样的用户和…

Java集合(Collection+Map)

Java集合&#xff08;CollectionMap&#xff09; 为什么要使用集合&#xff1f;泛型 <>集合框架单列集合CollectionCollection遍历方式List&#xff1a;有序、可重复、有索引ArrayListLinkedListVector&#xff08;已经淘汰&#xff0c;不会再用&#xff09; Set&#xf…