为了账号安全,请及时绑定邮箱和手机立即绑定

Bash 脚本:入门与进阶全面指南教程

标签:
Linux 运维

Bash 是一个强大的脚本工具,运行在类 Unix 系统上,比如 Linux 和 macOS。它是一个多功能工具,用于自动化任务、管理文件和系统交互。

基础知识:

Shell 脚本: 包含一系列 Bash 命令的文本文件。
Shebang: 脚本中的首行指示符,指示使用的解释器(例如,#!/bin/bash)。
运行: 使脚本可执行(chmod +x script.sh),然后运行它(./script.sh)。

一些重要的命令

回显: 在终端输出文本。
获取用户输入: 从用户获取输入。
if-else: 条件语句。
for: 用于遍历项目列表。
while: 只要条件为真就一直循环。
case: 根据值匹配模式。
函数: 可重复使用的代码块。

变量是指可以改变的数据值。这里我们讲的是变量。

声明语句: variable_name=value
用法示例: echo $variable_name
类型示例: 字符串类型, 整数类型, 浮点数类型。

文件管理

创建文件: touch 文件名
删除文件: rm 文件名
复制文件: cp 源文件 目标文件
移动文件: mv 源文件 目标文件
列出文件: ls
进入文件夹: cd 文件夹名

输入和输出

阅读: 读取变量值
写入: echo 命令 "文本" > 文件名:
追加: echo 命令 "文本" >> 文件名:

算术运算

基础: expr 2 + 3
Shell 算术: (( 结果 = 2 + 3 ))

控制流

如果...那么...

    Bash

    if [ 条件表达式 ]; then
        执行的命令
    elif [ 条件表达式 ]; then
        执行的命令
    else
        执行的命令
    fi

进入全屏模式,退出全屏模式

for循环(例如):

    Bash

    for 变量名 in 列表; do
        命令
    done

    # 循环变量名的列表

全屏模式:退出

while 循环:

    Bash

    while [ 条件成立 ]; 执行
        执行 命令
    直到条件不成立时停止重复执行

点击全屏按钮 退出全屏模式

案例:

    Bash

    case 变量名 in
        模式一)
            命令... ;;
        模式二)
            命令... ;;
        其他)
            命令... ;;
    esac

进入全屏 退出全屏

功能

定义如下:

在 Bash 中,函数定义如下:

    function 函数名() {
        命令
    }

下面是一个简单的 Bash 函数定义示例。

全屏, 退出全屏

调用: function_name

例子

大家好,

    Bash

    #!/bin/bash
    echo "Hello, World!"  # 输出 "Hello, World!"

全屏模式 退出全屏

简易计算器:

    Bash

    #!/bin/bash
    echo "请输入两个数字:"
    read num1 num2
    result=$((num1 + num2))
    echo "结果是: $result"

切换到全屏模式 退出全屏

正则表达式,也就是用来匹配字符串模式的表达式

模式匹配: 常用于复杂字符串的匹配和搜索。
语法: grep 'pattern' 文件(在文件中)
示例: 查找含有电子邮件地址的行:grep '[[:alnum:]]+@[[:alnum:]]+.[[:alnum:]]+' 文件
这里的正则表达式用于匹配常见的电子邮件格式。

管道和输入输出重定向

管道: 把一个命令的输出连到下一个命令的输入。
示例: 列出文件,按文件大小排序,并输出前10个:ls -l | sort -n -k 5 | head -n 10
重定向:
">": 覆盖输出。
">>": 追加输出。
"<": 输入重定向。

命令替换功能

在表达式中执行命令: 命令或 $(命令)
示例: 将变量设置为当前日期: current_date=$(date),其中“date”可以翻译为“当前日期”,例如:“current_date=$(当前日期)”。不过,考虑到这是一个示例,保留英文“date”也是可以接受的。

让我们来看看数组

声明: array_name=(element1 element2)
访问: echo ${array_name[index]}
示例: 创建一个水果列表: fruits=("苹果" "香蕉" "橙子")

带参数的函数

传递参数: function_name 参数1 和 参数2
访问这些参数: $1, $2, ...
例如:

    Bash
    function greet() {
        # 定义一个问候函数
        echo "输出 'Hello, [name]!'" # 输出 'Hello, $1!'
        # 其中 $1 是传递给函数的第一个参数
    }
    # 用 'John' 作为参数调用 greet 函数
    greet John

全屏,退出全屏

条件语句

括号测试: [条件] 或 [[条件]]
操作符: -f (文件), -d (目录), -x (可执行文件), -z (空文件), -n (非空文件), =, !=, <, >, -eq, -ne, -lt, -le, -gt, -ge
示例用法: 检查文件是否存在: if [ -f file.txt ]; then ...(这里的file.txt保持英文原样)

调试

跟踪: set -x
错误处理: 如果 [$? -ne 0]; 那么...
写入日志: 将 "Message" 写入 logfile

最佳做法

可读性: 使用有意义的变量名和注释来提高代码的清晰度。
错误处理: 预期并处理可能的错误,给出详细的错误信息。
模块化: 将复杂的脚本拆分成更小的函数,便于管理和维护。
效率: 优化脚本以提升性能。

高级内容

多行文本输入: 脚本中的多行输入。
Getopts: 用来解析命令行中的选项。
处理信号: 响应中断和信号。
在后台运行任务: 在后台运行命令。
定制 Bash 的行为: 比如“set -e 可以用来启用严格的错误检查”。

https://github.com/Rahul-1999/websetup

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消