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 可以让脚本在遇到错误时立即退出。

相关推荐
死磕音视频3 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
顽疲6 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
Wang's Blog6 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
程序喵大人8 小时前
【C++入门】编译链接模型 - 07 链接器怎样把符号对上号
开发语言·c++·编译器·编译链接·链接器
异彩8 小时前
一个纯前端的 Chrome 插件:不搭代理,也能把接口返回编圆
前端·chrome·mockito
微三云 - 廖会灵 (私域系统开发)8 小时前
供应链系统实战:多渠道订单聚合与分布式库存一致性方案总结
开发语言·分布式·php
学逆向的8 小时前
C 数据溢出与精度丢失
c语言·开发语言·网络安全
霸道流氓气质9 小时前
AgentFlow 入门与实战:Task-Based 并发、EWMA 动态调度与四道门禁的 Java 生产级编排
java·开发语言
lovingsoft9 小时前
Chrome Lighthouse 详解
前端·chrome
释厄6239 小时前
错误无误公理——错误正确本同源都迭代定律——逆转有价值
android·开发语言·kotlin