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

Bash 脚本基础

一、Bash 脚本基础

  • 什么是 Bash 脚本:Bash 脚本是一种文本文件,其中包含了一系列的命令,这些命令可以被 Bash shell 执行。它用于自动化重复性的任务,提高工作效率。

  • Bash 脚本的基本结构:以 #!/bin/bash 开头,表示使用 Bash 解释器来执行脚本。接下来是具体的命令和操作。

二、编写和运行第一个 Bash 脚本

  1. 创建脚本文件:使用命令 nano hello.sh 创建名为 hello.sh 的文件。

  2. 编写脚本:在文件中输入以下内容:

    bash复制

    #!/bin/bash
    echo "Hello World"
  3. 保存并退出:按 Ctrl+X 键,然后按 Y 键确认保存,最后按回车键退出 nano 编辑器。

  4. 赋予执行权限:在终端中运行 chmod u+x hello.sh 命令,赋予脚本执行权限。

  5. 运行脚本:执行 ./hello.sh 命令,即可看到输出 Hello World

三、变量的使用

  • 声明变量:变量的声明方式为 var=value,注意等号前后不能有空格。

  • 访问变量:使用 $var 的方式来访问变量的值。

  • 示例

    bash复制

    #!/bin/bash
    message="Hello World"
    echo $message

四、传递参数和用户输入

  • 传递参数:在运行脚本时,可以传递参数,例如 ./my_script.sh arg1 arg2。在脚本中,使用 $1$2 等来代表第 1、第 2 个参数。

  • 用户输入:使用 read 命令来获取用户的键盘输入,例如:

    bash复制

    #!/bin/bash
    echo "What is your name?"
    read name
    echo "Hello, $name"

五、条件语句

  • if-else 语句:用于根据条件执行不同的代码块。例如:

    bash复制

    #!/bin/bash
    if [ $(whoami) = 'root' ]; then
        echo "You are root"
    else
        echo "You are not root"
    fi

六、循环语句

  • for 循环:用于遍历一系列的值。例如:

    bash复制

    #!/bin/bash
    for i in {1..5}
    do
        echo $i
    done
  • while 循环:只要条件判断式成立,循环就会一直继续。例如:

    bash复制

    #!/bin/bash
    i=1
    while [ $i -le 5 ]
    do
        echo $i
        i=$((i+1))
    done
  • until 循环:只要条件判断式不成立则进行循环,并执行循环程序。例如:

    bash复制

    #!/bin/bash
    i=1
    until [ $i -gt 5 ]
    do
        echo $i
        i=$((i+1))
    done

七、函数的创建和使用

  • 定义函数:使用 function 函数名 () { ... } 的格式来定义函数。例如:

    bash复制

    #!/bin/bash
    function greet () {
        echo "Hello, $1"
    }
  • 调用函数:通过函数名来调用函数,例如 greet "Alice"

八、错误处理

  • 检查命令是否成功:使用 $? 来获取最后执行命令的退出状态,0 表示成功,非 0 表示失败。

  • 使用 set 命令set -e 可以让脚本在遇到错误时立即退出。

相关文章:

  • numpy学习笔记15:模拟100次随机游走,观察平均行为
  • 数据处理专题(二)
  • vue2 el-table跨分页多选以及多选回显
  • Springboot的MultipartFile,获取不到inputStream
  • SeaCMS代码审计
  • 基于深度学习的OCR+NLP,医疗化验单智能识别方案
  • 【量化实战】利用miniqmt实现远程下单的完整指南
  • 阿里开源QwQ-32B推理模型!32.5B vs 671B|仅需1/10成本
  • python函数的多种参数使用形式
  • R语言软件配置(自用)
  • 人工智能之数学基础:矩阵的降维
  • 对上传的图片进行压缩,以保证它的大小不超过X MB
  • 亚马逊新品广告投放策略:从零到爆单的全链路解析
  • 黑客如何查找网络安全漏洞
  • 用 pytorch 从零开始创建大语言模型(四):从零开始实现一个用于生成文本的GPT模型
  • 关于Docker是否被淘汰虚拟机实现连接虚拟专用网络Ubuntu 22.04 LTS部署Harbor仓库全流程
  • C++ 各种map对比
  • 【JVM】内存区域划分,类加载机制和垃圾回收机制
  • openEuler24.03 LTS下安装Hadoop3完全分布式
  • 第十五届蓝桥杯C/C++组:宝石组合题目(从小学奥数到编程题详解)
  • 打造沪派水乡的“湿意”,上海正在保护营造一批湿地空间
  • 人社部:将制定提前领取个人养老金相关办法
  • 外交部亚洲司司长刘劲松向菲方严肃交涉
  • 总书记考察的上海“模速空间”,是一个怎样的空间?
  • 借助AI应用,自闭症人群开始有可能真正“读懂他人”
  • 第二部以“法典”命名的法律!生态环境法典编纂迈出“关键步”