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

shell脚本(1)

声明:学习视频来自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.kler.cn/a/396105.html

相关文章:

  • 深入理解 source 和 sh、bash 的区别
  • css:浮动
  • Android Settings 单元测试 | 如何运行单元测试?
  • SpringBoot整合Mybatis-Plus实践汇总
  • 直流保护电路设计及保护器件参数说明和选型
  • 安全,服务器证书和SSL连接
  • 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
  • TMMI(测试成熟度模型集成)认证是什么?
  • uniapp微信登录的流程
  • 同三维T610UDP-4K60 4K60 DP或HDMI或手机信号采集卡
  • paddle表格识别数据制作
  • 【3D Slicer】的小白入门使用指南八
  • Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)
  • 自动化运维(k8s):一键获取指定命名空间镜像包脚本
  • 衡石科技BI如何助力企业实现数字化转型
  • Spring Boot编程训练系统:敏捷开发与持续集成
  • My_SQL day3
  • 如何在 untitled 软件中安装 Scala插件
  • 微服务学习重点:底层的实现逻辑
  • java8之Stream流
  • 方法论-WPS模型(高效沟通和决策分析的框架)
  • 【软件工程】具体的设计方法(等价类、边界值、场景法)
  • 【JAVA】使用IDEA创建maven聚合项目
  • 2024React面试精选——持续更新
  • Pycharm 配置 Poetry
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】启动页