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

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 语句块。
  • 语法
    if [ condition ]; then# 如果条件为真,执行这里的代码
    elif [ another_condition ]; then# 如果另一个条件为真,执行这里的代码
    else# 如果所有条件都不为真,执行这里的代码
    fi
    

-;;

  • 用途;; 用于结束 case 语句中的一个分支。
  • 语法
    case $variable inpattern1)# 如果变量匹配 pattern1,执行这里的代码;;pattern2)# 如果变量匹配 pattern2,执行这里的代码;;*)# 如果变量不匹配任何模式,执行这里的代码;;
    esac
    

-esac

  • 用途esac 用于结束 case 语句快。
  • 语法
    case $variable inpattern1)# 如果变量匹配 pattern1,执行这里的代码;;pattern2)# 如果变量匹配 pattern2,执行这里的代码;;*)# 如果变量不匹配任何模式,执行这里的代码;;
    esac
    
  1. case 语句

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

    if grep -q "^$BOOK_ID:" "$BOOK_FILE"; then...
    else...
    fi
    
    • 这些 if 语句用于检查书号是否存在,并根据结果执行不同的操作。
    • 每个 if 语句块以 fi 结束。
http://www.lryc.cn/news/488092.html

相关文章:

  • mongoDB副本集搭建-docker
  • Python软体中使用 Flask 或 FastAPI 搭建简单 RESTful API 服务并实现限流功能
  • CentOS操作系统下安装Nacos
  • C++设计模式之适配器模式与桥接模式,装饰器模式及代理模式相似点与不同点
  • ThreadLocal 和 Caffeine 缓存是两种不同的缓存机制,它们在用途和实现上有明显的区别
  • Django实现智能问答助手-进一步完善
  • 【Linux】开发工具make/Makefile、进度条小程序
  • 深度学习三大框架对比与实战:PyTorch、TensorFlow 和 Keras 全面解析
  • Leetcode206.反转链表(HOT100)
  • 怎么做好白盒测试?
  • 【神经网络基础】
  • 实战 | C#中使用YoloV8和OpenCvSharp实现目标检测 (步骤 + 源码)
  • debian 如何进入root
  • 短视频矩阵系统:智能批量剪辑、账号管理新纪元!
  • 【SpringMVC - 1】基本介绍+快速入门+图文解析SpringMVC执行流程
  • vitepress博客模板搭建
  • Git入门图文教程 -- 深入浅出 ( 保姆级 )
  • Linux编辑器 - vim
  • Spring Security使用基本认证(Basic Auth)保护REST API
  • MySQL —— explain 查看执行计划与 MySQL 优化
  • 出海第一步:搞定业务系统的多区域部署
  • 二手手机回收小程序,一键便捷高效回收
  • 开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现离线推理-性能分析(四)
  • 深入解析小程序组件:view 和 scroll-view 的基本用法
  • 【汇编语言】转移指令的原理(三) —— 汇编跳转指南:jcxz、loop与位移的深度解读
  • opencv-python 分离边缘粘连的物体(距离变换)
  • 机器学习杂笔记1:类型-数据集-效果评估-sklearn-机器学习算法分类
  • Django+Nginx+uwsgi网站使用Channels+redis+daphne实现简单的多人在线聊天及消息存储功能
  • 数据结构在二叉树Oj中利用子问题思路来解决问题
  • 华为openEuler考试真题演练(附答案)