bash笔记

ops/2024/11/25 17:25:05/

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 inpattern1)# 如果变量匹配 pattern1,执行这里的代码;;pattern2)# 如果变量匹配 pattern2,执行这里的代码;;*)# 如果变量不匹配任何模式,执行这里的代码;;
    esac
    

-esac

  • 用途esac 用于结束 case 语句快。
  • 语法
    bash">case $variable inpattern1)# 如果变量匹配 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 结束。

http://www.ppmy.cn/ops/136628.html

相关文章

jupyter notebook的 markdown相关技巧

目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点:一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果:加粗,斜体&#x…

代替Spinnaker 的 POINTGREY工业级相机 FLIR相机 Python编程案例

SpinnakerSDK_FULL_4.0.0.116_x64 是一个用于FLIR相机的SDK,主要用于图像采集和处理。Spinnaker SDK主要提供C接口,无法直接应用在python环境。本文则基于Pycharm2019python3.7的环境下,调用opencv,EasySpin,PySpin,的库实现POINTGREY工业级相…

【机器学习】超简明Python基础教程

Python是一种简单易学、功能强大的编程语言,适用于数据分析、人工智能、Web开发、自动化脚本等多个领域。本教程面向零基础学习者,逐步讲解Python的基本概念、语法和操作。 1. 安装与运行 安装Python 从官网 Welcome to Python.org 下载适合自己系统的…

机器翻译 数据集 (NLP基础 - 预处理 → tokenize → 词表 → 截断/填充 → 迭代器) + 代码实现 —— 笔记3.9《动手学深度学习》

目录 0. 前言 1. 下载和预处理数据集 2. 词元化 (tokenize) 3. 词表 (Vocab) 4. 加载数据集 (填充/截断) 5. 迭代器 (iterator) 6. 小结 0. 前言 课程全部代码(pytorch版)已上传到附件本章节为原书第9章(现代循环网络),共分为8节&…

计算机网络实验 DNS协议分析与测量

1. 实验目的 了解互联网的域名结构、域名系统DNS及其域名服务器的基本概念 熟悉DNS协议及其报文基本组成、DNS域名解析原理 掌握常用DNS测量工具dig使用方法和DNS测量的基本技术 2. 实验环境 硬件要求:阿里云云主机ECS 一台。 软件要求:Linux/ Wind…

【SpringBoot】 数据库查询超时配置

文章目录 1. 简介1.1 介绍数据库超时配置的重要性1.2 概述Spring Boot在数据库连接中的应用 2. 配置文件层面处理超时2.1 Spring Boot数据库连接的基本配置2.2 常用的数据库连接池HikariCP如何在Spring Boot中配置HikariCPHikariCP的关键超时参数 Tomcat JDBC PoolDruid连接池关…

Unity3D基于ECS的游戏逻辑线程详解

前言 Unity3D是一款非常流行的游戏开发引擎,其采用的是组件实体系统(ECS)架构,这种架构可以让游戏开发者更加高效地管理游戏逻辑线程。本文将详细介绍Unity3D基于ECS的游戏逻辑线程,并给出技术详解以及代码实现。 对…

Go消费kafka中kafkaReader.FetchMessage(ctx)和kafkaReader.ReadMessage(ctx)的区别

在Go语言的Kafka消费中,kafkaReader.FetchMessage(ctx) 和 kafkaReader.ReadMessage(ctx) 都是用来从Kafka中消费消息的,但它们的用法和功能有一些细微的区别。以下是两者的主要区别: 1. FetchMessage(ctx) 功能:FetchMessage 从…