shell脚本(2)

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

感谢泷羽sec 团队的教学
视频地址:shell编程(2)永久环境变量和字符串显位_哔哩哔哩_bilibili

本文主要讲解临时变量和永久变量以及字符串长度截取操作。

一、常见的变量

1. 临时变量与永久变量
  • 临时变量:
    • 仅在当前会话(shell 会话)或脚本中有效。
    • 会话结束后,变量失效。
    • 示例:
      new_name="TOM" echo $new_name # 输出 TOM
  • 永久变量:
    • 写入到配置文件(如 .bashrc.bash_profile),在新的会话中仍然有效。
    • 示例:
      echo 'export my_na="pppp"' >> ~/.bashrc 
      source ~/.bashrc 
      echo $my_na # 输出 pppp


2. 环境变量
  • 环境变量的用途:

    • 系统通过环境变量存储全局信息(如用户目录、系统路径等)。
    • 示例:
      echo $HOME # 显示当前用户的家目录,例如 /root 
      echo $PATH # 显示可执行程序的搜索路径

  • 环境变量的特点:

    • $PATH 是最常见的
    • 示例:
      echo $PATH # 输出类似以下内容: 
      /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

  • 验证命令路径:

    • 使用 which 命令查看可执行文件的完整路径:

      which ls # 输出:/usr/bin/ls

    • 系统执行命令时,会根据 $PATH 的值按顺序在每个目录中查找匹配的可执行文件。


3. 将临时变量变为永久变量
方法(一):移动脚本到 $PATH 指定的目录
  1. 将脚本文件移动到 $PATH 中的某个目录(如 /usr/bin):
    mv 1.sh /usr/bin/

  2. 之后可以直接通过脚本名运行,而不需要指定路径:
    1.sh

方法(二):修改 $PATH 添加自定义目录
  1. 临时添加目录到 $PATH

    export PATH=/root:$PATH 
    echo $PATH # 查看是否成功添加 /root 到环境变量

  2. 解释:

  • export:用于设置环境变量,使其对当前 shell 和子进程生效。
  • $PATH:定义系统查找命令的目录顺序。
  • /root:$PATH:将 /root 目录添加到 $PATH 的前面。
  • 当用户运行命令时,系统会先在 /root 中查找,然后在原 $PATH 指定的其他目录中查找。

4. 永久添加变量到 $PATH
  • 步骤:

    • 编辑 ~/.bashrc 文件:
      vi ~/.bashrc
      # 添加以下内容
      export PATH=/root:$PATH

    • 使配置文件生效:
      source ~/.bashrc

  • 验证:

    • 新开一个终端窗口,运行 1.sh 验证脚本是否可以直接运行。


二、字符串操作

1. 获取字符串长度
  • 使用 ${#变量名} 获取字符串长度:
    str="hello world" 
    echo ${#str} # 输出 11


2. 字符串截取
  • 使用 ${变量名:起始位置:长度} 截取子字符串:

    str="hello world" 
    echo ${str:0:5} # 输出 hello 
    echo ${str:6:5} # 输出 world

字符串截取语法
  • 格式:${变量名:起始位置:长度}
    • 变量名:字符串的变量名。
    • 起始位置:从字符串的哪个位置开始截取,从 0 开始计数。
    • 长度:从起始位置开始截取的字符数。

分析
  • echo ${str:0:5}

    • str="hello world"
    • 起始位置是 0,从字符串的第一个字符 h 开始。
    • 截取长度是 5,包括 h、e、l、l、o
    • 输出结果:hello
  • echo ${str:6:5}

    • 起始位置是 6,从字符串的第 7 个字符开始(索引从 0 开始)。
    • 6 位对应的是 w(字符串索引:h=0, e=1, l=2, l=3, o=4, 空格=5, w=6)。
    • 截取长度是 5,包括 w、o、r、l、d
    • 输出结果:world

让我们将字符串 str 按照索引位置标注出来:

索引012345678910
字符helloworld
  • echo ${str:0:5} 截取的是从索引 0 开始,长度为 5 的字符 → hello
  • echo ${str:6:5} 截取的是从索引 6 开始,长度为 5 的字符 → world

 

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

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

相关文章

SEW MDX61B 变频器调试说明

SEW MDX61B 变频器调试说明 1、打开MOVITOOLS MotionStudio软件 2、创建新项目(可根据需求更改项目名称及保存路径) 新建完成 3、电机初始化 连接新变频器和新电机时,必须进行电机初始化。电机初始化目的为配对电机参数至变频器,简单说就是让变频器知道需要控制的是什么…

【软件测试】设计测试用例的万能公式

文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例? 测试⽤例(Test Case)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包…

泛微OA 请求外部数据源

1 .oa 外部数据源配置好 取数据源名称 引用key 固定写法 datasource.A_nc datasource.数据源名称 getConnection("datasource.A_nc",xf);//A账 2 引用方式 package weaver.interfaces.jphr;import java.io.UnsupportedEncodingException; import java.sql.Conne…

深度学习基础—Bleu得分

引言 机器翻译任务中,通常会需要评价指标来评估机器翻译的好坏。仅通过统计翻译词在标准翻译中出现的次数这种方式很不合理,就需要用到Bleu得分来进行评估。 1.n-gram(N元组) 假设要翻译:Le chat est sur le tapis&am…

794: 最近对问题

解法&#xff1a; #include<bits/stdc.h> using namespace std; const int N1e33; struct P{int x,y; }a[N]; int main(int argc, char** argv) {int t,n;cin>>t;while (t--){cin>>n;for (int i0;i<n;i) cin>>a[i].x>>a[i].y;double dis,mn1…

Vue基础(1)_模板语法、数据绑定

模板语法 Vue模板语法有2大类&#xff1a; 1、插值语法&#xff1b; 功能&#xff1a;用于解析标签体内内容。 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 2、指令语法&#xff1a; 功能&#xff1a;用于解析标签(包括…

如何清洗电水壶中的水垢亲自实践

以前看过很多生活小妙招&#xff0c;什么柠檬啊&#xff0c;白醋啊&#xff0c;土豆片啊&#xff0c;都测试过。没有用。因为自来水很硬&#xff0c;钙比较重。 钙覆盖在水壶底部&#xff0c;烧水就滋滋得响&#xff0c;而且效率变低。 昨天买洁厕剂&#xff0c;看到一种除垢…

LC13:滑动窗口

文章目录 1052. 爱生气的书店老板 这个专栏记录自己刷题碰到的有关滑动窗口的题目。 1052. 爱生气的书店老板 题目链接&#xff1a;1052. 爱生气的书店老板 第一感应该是滑动窗口可以解决的&#xff0c;随后思考并写了几个版本&#xff0c;最终版本实现结合滑动窗口一次遍历…

酒店管理系统(源码+文档+部署+讲解)

本文将深入解析“酒店管理系统”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 酒店管理系统是一款为酒店行业设计的全面管理软件&#xff0c;旨在通过集成酒店运营的各个关键环节&#xff0c;提高酒店的管理效率和客户满意…

D3开发的基本框架步骤

D3.js 是一个功能强大的数据可视化库&#xff0c;用于在网页上创建复杂的图表和交互式图形。以下是一个基本的 D3.js 开发框架&#xff0c;包括了常见的步骤和代码示例&#xff0c;帮助你快速入门。 基本框架 引入 D3.js 库设置 SVG 容器加载数据创建比例尺绘制图形添加轴添加…

正则表达式完全指南,总结全面通俗易懂

目录 元字符 连接符 限定符 定位符 修饰符&#xff08;标记&#xff09; 运算符优先级 普通字符集及其替换 零宽断言 正向先行断言 负向先行断言 正向后发断言 负向后发断言 正则表达式在线测试: 正则在线测试工具 元字符 字符描述\d 匹配一个数字字符。等价于 …

对象的初步认识

#对象可组织数据&#xff08;如统计数据的表格&#xff09; 下以表格为例 1.设计一个表格:(None为初始值设定&#xff0c;表示无) class a; ##1None ##2None 2.创建一个表格 变量a 3.对对象的属性进行赋值 变量.##1"##" 变量.##2"##" 4.查询对象中…

Linux驱动开发第1步_了解STM32MP157D

了解STM32MP157D有哪些硬件资源&#xff0c;为以后进行Linux驱动开发做准备。 STM32MP157A/D器件基于高性能双核ArmCortex-A7 32位RISC内核&#xff0c;工作频率高达800 MHz。Cortex-A7处理器&#xff1a;每个CPU具有32kbyte L1指令缓存&#xff0c;每个CPU具有32kbyte L1数据…

w039基于Web足球青训俱乐部管理后台系统开发

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

windows C#-编写 C# LINQ 查询(上)

介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的。 但是在编译代码时&#xff0c;查询语法必须转换为针对 .NET 公共语言运行时 (CLR) 的方法调用。 这些方法调用会调用标准查询运算符(名称为 Where、Select、GroupBy、Join、Max 和 Average …

c++入门->类的定义以及this详细解析

1.对象的定义 可以在内部定义变量还有函数&#xff0c;而其中的public是声明这里面的东西是共有的&#xff0c;可以调用也可以修改&#xff0c;但是private则是声明这里面的东西是私有的不可以被改变的&#xff0c;但是在类里面共有的是可以使用私有的。 在对象中默认都是私有…

SAP- 不写代码创建报表

创建报表 点击报保存&#xff0c;表Z0708创建完成 关联三张数据库底表 点击返回 点击报保存&#xff0c;表Z0708创建完成 创建报表

从PE结构到LoadLibrary

从PE结构到LoadLibrary PE是Windows平台主流可执行文件格式,.exe , .dll, .sys, .com文件都是PE格式 32位的PE文件称为PE32&#xff0c;64位的称为PE32&#xff0c;PE文件格式在winnt.h头中有着详细的定义&#xff0c;PE文件头包含了一个程序在运行时需要的所有信息&#xff…

聚类分析 | MSADBO优化Spectral谱聚类优化算法

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于改进正弦算法引导的蜣螂优化算法(MSADBO)优化Spectral谱聚类&#xff0c;matlab代码&#xff0c;直接运行! 创新独家&#xff0c;先用先发&#xff0c;注释清晰&#xff0c;送MSADBO参考文献!优化参数 优化后的带…

【C++】构造与析构函数

目录&#xff1a; 一、 This指针  &#xff08;一&#xff09;使用方法&#xff1a; 二、类的默认成员函数 三、构造函数  &#xff08;一&#xff09;构造函数的特点 四、析构函数 &#xff08;一&#xff09;析构函数的特点 正文 一、 This指针 在c语言中我们调用函…