当前位置: 首页 > article >正文

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.kler.cn/a/397395.html

相关文章:

  • 通过JS删除当前域名中的全部COOKIE教程
  • rk3399开发环境使用Android 10初体验蓝牙功能
  • 物理hack
  • Python如何获取request response body
  • sql注入之二次注入(sqlilabs-less24)
  • 2002.6 Partitioning the UMLS semantic network.划分 UMLS 语义网络
  • 【分布式】万字图文解析——深入七大分布式事务解决方案
  • 数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题
  • 2024智能机器人与自动控制国际学术会议 (IRAC 2024)
  • docker构建多平台容器
  • 前端无感刷新token
  • Vue的局部使用
  • 腾讯IM uniapp微信小程序版本实现迅飞语音听写(流式版)
  • 【机器学习chp2】贝叶斯最优分类器、概率密度函数的参数估计、朴素贝叶斯分类器、高斯判别分析。万字超详细分析总结与思考
  • Typora右键打开文件夹/设置右键打开方式/Windows右键管理器
  • 源码解析-Spring Eureka(更新ing)
  • HTML面试题(2)
  • 前端性能优化之R树的使用
  • IDEA自定义文件打开格式
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-套娃
  • 读书笔记:《Redis设计与实现》之发布订阅
  • Restful API接⼝简介及为什么要进⾏接⼝压测
  • 【python】掌握 Flask:轻量级 Web 开发框架解析
  • 理论力学基础:讲义与笔记(1)
  • llamaindex实战-Agent-在Agent中和数据库对话(本地部署)
  • 新人如何做好项目管理?|京东零售技术人成长