bash笔记

0

0 是脚本的名称,# 是传入的参数数量,1 是第一个参数,BOOK_ID 是变量BOOK_ID的内容

1

-echo用于在命令窗口输出信息

-$():是命令替换的语法。$(...) 会执行括号内的命令,并将其输出捕获为一个字符串,然后赋值给变量。

-|:管道符 | 用于将前一个命令的输出作为下一个命令的输入。

-cut 命令用于从每一行中剪切出指定的字段。

eg.cut -d':' -f1:

  • -d':' 指定了字段的分隔符为冒号 :。
  • -f1 表示提取第一个字段。
  • 整一行表示按:裁减,并取第一个字段

eg.假设 BOOK_INFO 的值为 2001:Python编程:张三:计算机科学,那么BOOK_ID=$(echo $BOOK_INFO | cut -d':' -f1) 的值为 2001。

-grep 命令用于在文件中搜索匹配指定模式的行。

  • -q:静默模式,不输出任何内容,只返回状态码。如果找到匹配项,返回 0(真),否则返回 1(假)。可作为条件语句的判断信息。

-read命令用于从标准输入读取一行,并将输入的内容存储在一个或多个变量中。

  • -p 选项允许你在提示用户输入时显示一条消息。这条消息会出现在同一行上,等待用户输入。
    eg.read -p "确认要删除书号为 $BOOK_ID 的书籍吗?(y/n): " CONFIRM

-sed 是一个流编辑器,用于对文件进行文本转换。

  • -i 选项表示直接在文件中进行修改。
  • "/^$BOOK_ID:/d" 是一个 sed 命令,用于删除文件中以指定书号开头的行。
  • ^$BOOK_ID: 匹配以书号开头的行。
  • d 表示删除匹配的行。

2

在 Bash 脚本中,fi 和 ;; 都是用于结束特定结构的关键字。它们分别用于结束 if 语句和 case 语句中的分支。

-fi

  • 用途 :fi 用于结束一个 if 语句块。

  • 语法 :

    bash 复制代码
    if [ condition ]; then
        # 如果条件为真,执行这里的代码
    elif [ another_condition ]; then
        # 如果另一个条件为真,执行这里的代码
    else
        # 如果所有条件都不为真,执行这里的代码
    fi

-;;

  • 用途 :;; 用于结束 case 语句中的一个分支。

  • 语法 :

    bash 复制代码
    case $variable in
        pattern1)
            # 如果变量匹配 pattern1,执行这里的代码
            ;;
        pattern2)
            # 如果变量匹配 pattern2,执行这里的代码
            ;;
        *)
            # 如果变量不匹配任何模式,执行这里的代码
            ;;
    esac

-esac

  • 用途 :esac 用于结束 case 语句快。

  • 语法 :

    bash 复制代码
    case $variable in
        pattern1)
            # 如果变量匹配 pattern1,执行这里的代码
            ;;
        pattern2)
            # 如果变量匹配 pattern2,执行这里的代码
            ;;
        *)
            # 如果变量不匹配任何模式,执行这里的代码
            ;;
    esac
  1. case 语句:

    bash 复制代码
    case $1 in
        -a)
            # 添加书籍
            ...
            ;;
        -d)
            # 删除书籍
            ...
            ;;
        -s)
            # 搜索书籍
            ...
            ;;
        *)
            # 错误参数
            usage
            ;;
    esac
    • case 语句根据 $1 的值进行分支处理。
    • 每个分支以 ;; 结束。
    • esac 结束了整个 case 语句。
  2. 嵌套的 if 语句:

    bash 复制代码
    if grep -q "^$BOOK_ID:" "$BOOK_FILE"; then
        ...
    else
        ...
    fi
    • 这些 if 语句用于检查书号是否存在,并根据结果执行不同的操作。
    • 每个 if 语句块以 fi 结束。
相关推荐
sbjdhjd10 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
海绵宝宝的月光宝盒13 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
白山编程大哥14 小时前
接口幂等性是什么?如何设计?
笔记
ACP广源盛1392462567314 小时前
6 盘位存储扩展方案选型笔记:YLB3116 @ACP评估记录
笔记·硬件架构·硬件工程·国产芯片
小李不想当小白14 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
weixin_4481199417 小时前
Datawhale Jev Cookbook 202610 笔记3
笔记
姚瑞南17 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理
Gnevergiveup17 小时前
ATT&CK红蓝对抗实战指南-Windows安全基础
笔记·网络安全
web打印社区18 小时前
Chrome-kiosk-printing能上生产吗
开发语言·前端·javascript·chrome·websocket
江屿风20 小时前
【Plain Language Large Model】【从麦当劳点餐到Redis接入:MCP如何让AI工具集成变简单】流食般投喂
人工智能·redis·笔记·语言模型·llm·mcp