Bash Shell知识合集

1. chmod命令

创建一个bash shell脚本 hello.sh

~script $ touch hello.sh

脚本创建完成后并不能直接执行,我们要用chmod命令授予它可执行的权限:

~script $ chmod 755 hello.sh

授权后的脚本可以直接执行:

~script $ ./hello.sh

2.指定运行脚本的解析器shebang

在脚本开头加上#!/usr/bin/env bash , 表示当前脚本会用bash解析器来执行脚本:

~script $ ./hello.sh

如果没有指定的话,那么上面这一句会用terminal(终端)默认的脚本解析器来解析,可能会遇到执行不了的情况,因为不同的脚本语言的规则并不尽相同,遇到这种情况可以在执行时指定解析器:

~script $ bash hello.sh

小知识:
在执行脚本时,./为什么要加上呢?是因为在类Unix系统上(Mac os 、linux)的terminal的脚本解析器执行脚本时,会在好几个路径上去寻找这个脚本文件, 但偏偏它不包括当前terminal打开的路径,所以我们通过./告诉它,我们要执行的脚本文件在当前目录下。

类似的还有:

  • #!/bin/bash
  • #!/usr/bin/env python
  • #!/usr/bin/env node

3.在脚本中创建和使用变量

4.脚本参数

5.在脚本中执行基本脚本命令或系统命令

6.bash shell的条件语句

7.while循环

8.for循环

9.break和continue关键字在循环体中的使用

10.读取系统变量

11.函数

12.管道

13. 文件读写操作

14.sleep命令

delay.sh:

#!/usr/bin/env bashDELAY=$1if [ -z $DELAY ];then # 检查是不是没有传DELAYecho "You must supply a delay"exit 1
fiecho "going to sleep for $DELAY"
sleep $DELAY # sleep
echo "we are awake now"
exit 0

我们执行一下并观察脚本退出状态:

script % ./delay.sh  
You must supply a delay
script % echo $?
1
script % ./delay.sh 5
going to sleep for 5
we are awake now
script % echo $?
0

我们还可以加个&,把脚本程序放后台运行:

script % ./delay.sh 5 &
[1] 18958
script % going to sleep for 5script % 
script % we are awake now[1]  + done       ./delay.sh 5

15.观察程序状态

#16.正则表达式的使用例子

valid.sh:

#!/usr/bin/env bashVALID=0while [ $VALID -eq 0 ]
doread -p "input food name & price:" FOOD PRICEif [[ (-z $FOOD) || (-z $PRICE) ]];thenecho food name and price are not providedcontinueelif [[ ! $FOOD =~ ^[A-Za-z]+$ ]];thenecho "food name is not valid!"continueelif [[ ! $PRICE =~ ^[0-9]+$ ]];thenecho "price is not valid!"continuefiVALID=1
done
echo $FOOD $PRICE
exit 0
script % ./valid.sh
input food name & price:apple 55
apple 55

温馨提示:
下面的表达式与括号是不需要有空格分隔的。

((表达式))
[[表达式]]

if [[ (-z $FOOD) || (-z $PRICE) ]] 等价 if [ -z $FOOD ] || [ -z $PRICE ]

更多bash脚本知识请参考官方文档

结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1225. 报告系统状态的连续日期 - 力扣(LeetCode)

目录 1. 力扣链接 2. 题目 3. 分析 4. 代码实现 5. 代码验证 6. 总结 1. 力扣链接 1225. 报告系统状态的连续日期 - 力扣(LeetCode) 2. 题目 表:Failed ----------------------- | Column Name | Type | -----------------------…

jenkins集成工具(一)部署php项目

目录 什么是CI 、CD Jenkins集成工具 一、Jenkins介绍 二、jenkins的安装和部署 环境部署 安装jenkins 安装gitlab 配置镜像源进行安装 修改密码 安装git工具 上传测试代码 Jenkins部署php项目wordpress 发布php代码 安装插件 测试代码发布 实现发布成功发送邮件…

拉链表,流⽔表以及快照表的含义和特点

拉链表 含义 拉链表主要用于记录数据的历史变化情况。从数据结构角度看,它的每条记录都包含了一个实体(如客户、产品等)的关键信息以及两个时间戳字段,即起始日期(Start_Date)和结束日期(End_Da…

Mysql数据库中,监测某张表中某字段的修改情况(被哪个ip所修改、新老值)

在Mysql数据库中,通过写一个触发器,来监测某张表(q_device)字段(run_status)的改变情况。 【示例】 -- 1. 创建监测日志表 CREATE TABLE change_log (id INT AUTO_INCREMENT PRIMARY KEY,table_name VARCHAR(255),column_name VARCHAR(255),old_value T…

STM32F103RCT6学习之一:基本开发流程

开发方式 1.基于寄存器开发---与51类似 2.基于标准库开发----基于寄存器进行函数的封装 3.基于HAL库开发----对标准库进行更深入的封装,有句柄、回调函数等概念 STM32Cube 一种STM32硬件配置开发工具,可根据需要生成项目模版 1.选择芯片 2.配置管…

FreeRTOS中xPortPendSVHandler()和vPortSVCHandler()这两个函数的作用

在 FreeRTOS 中,xPortPendSVHandler() 和 vPortSVCHandler() 是两个重要的中断服务例程(ISR),它们负责处理与操作系统相关的异常。这些函数对于实现上下文切换和任务管理至关重要。下面分别解释这两个函数的作用: xPo…

汽车IVI中控开发入门及进阶(46):FFmpeg

概述: FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西。它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 在各种构建环境、机器架构…

.NET平台用C#通过字节流动态操作Excel文件

在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据。这种方法允许开发者直接在内存中创建、修改和保存Excel文档,无需依赖直接的文件储存、读取操作,从而提高了程序的性能和安全性。使用流技术处理Excel不仅简化了…

将多个 k8s yaml 配置文件合并为一个文件

如下bash脚本实现功能 “将多个k8s的yaml 配置文件” 合并为一个 yaml,使用 --- 分割文件配置。 创建文件 merge_yaml.sh ,内容如下: #!/bin/bash# 默认参数 input_patterns() # 匹配的文件模式数组 output_file"combined.yaml"…

Word论文交叉引用一键上标

Word论文交叉引用一键上标 1.进入Microsoft word使用CtrlH快捷键或单击替换按钮 2.在查找内容中输入[^#] 3.鼠标点击,标签为“替换为:”的文本框,注意光标一定要打在图红色方框圈中的文本框中! 4.点击格式选择字体 5.勾选上标…

直流有刷电机多环控制(PID闭环死区和积分分离)

直流有刷电机多环控制 提高部分-第8讲 直流有刷电机多环控制实现(1)_哔哩哔哩_bilibili PID模型 外环的输出作为内环的输入,外环是最主要控制的效果,主要控制电机的位置。改变位置可以改变速度,改变速度是受电流控制。 实验环境 【 !】功能简介: 按下KEY1使能电机,按下…

计算机网络实验室建设方案

一、计算机网络实验室拓扑结构 计算机网络综合实验室解决方案,是面向高校网络相关专业开展教学实训的综合实训基地解决方案。教学实训系统采用 B/S架构,通过公有云教学实训平台在线学习模式,轻松实现网络系统建设与运维技术的教学…

soular使用教程

用 soular 配置你的组织,工作更高效!以下是快速上手的简单步骤:  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责的清晰分配。  1.1 用…

memory泄露分析方法(Binder,Window,View篇)

View泄露:从Hprof找大量重复的view,点击查看text文案如果相同则找产品他们确认是否合理 window泄露:代码或dumpsys window来监测是否有大量同名window,不能用windowtoken来辨别是否重复window,每个window token都不一样…

FPGA的DMA应用——pcileech

硬件通过pcie总线,访存本机的内存,并进行修改,可以进行很多操作。 学习视频:乱讲DMA及TLP 1-pcileech项目简介和自定义模块介绍_哔哩哔哩_bilibili vivado2024.1的下载文章链接和地址:AMD-Xilinx Vivado™ 2024.1 现…

原点安全再次入选信通院 2024 大数据“星河”案例

近日,中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织开展的 2024 大数据“星河(Galaxy)”案例征集活动结果正式公布。由工银瑞信基金管理有限公司、北京原点数安科技有限公司联…

操作系统知识点总结

第一章 1.1_1 操作系统的概念、功能和目标 操作系统(Operating System, OS):是指控制和管理整个计算机系统的 硬件和软件 资源,并合理地组织调度计算机的工作和资源的分配。 作为用户和计算机硬件之间的接口 提供的功能 命令接口…

Log4j2的Policies详解、SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy

文章目录 一、Policies二、SizeBasedTriggeringPolicy:基于文件大小的滚动策略2.1、文件达到指定大小就归档 三、TimeBasedTriggeringPolicy:基于时间间隔的滚动策略3.1、验证秒钟归档场景3.2、验证分钟场景3.3、验证小时场景 四、多策略组合使用五、扩展知识5.1、S…

【机器学习与数据挖掘实战】案例06:基于Apriori算法的餐饮企业菜品关联分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联…

DataCap MongoDB Driver: 全面解析MongoDB在DataCap中的使用指南

在大数据时代,MongoDB作为一款广受欢迎的NoSQL数据库,其灵活的文档存储模型和强大的查询能力使其成为许多现代应用的首选数据存储方案。今天,我们将深入探讨DataCap MongoDB Driver,这是一个强大的工具,它让在DataCap环…