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

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脚本知识请参考官方文档

结束

相关文章:

Bash Shell知识合集

1. chmod命令 创建一个bash shell脚本 hello.sh ~script $ touch hello.sh脚本创建完成后并不能直接执行,我们要用chmod命令授予它可执行的权限: ~script $ chmod 755 hello.sh授权后的脚本可以直接执行: ~script $ ./hello.sh2.指定运行…...

从0入门自主空中机器人-1【课程介绍】

关于本课程: 本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程,包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程,带你从0开始,组装属于自己的自主无人机,并让…...

Doris使用注意点

自己学习过程中整理,非官方 dws等最后用于查询的表可以考虑使用row存储加快查询,即用空间换时间duplicate key的选择要考虑最常查询使用适当使用bloomfilter 加速查询适当使用aggregate 模式降低max,avg,min之类的计算并加快查询…...

Mybatis插件better-mybatis-generator的下载与使用

1.下载 找到设置 插件 搜索better-mybatis-generator 下载并且重启IDEA 2.连接数据库 点击测试连接 连接成功如下图 3.使用插件 选择对应的表 右击选择 注意:mysql8.0驱动一定要勾上mysql_8 其他地方不要动 然后实体类 mapper xml就都生成好了 mapper里有默认增删…...

uniapp小程序实现弹幕不重叠

uniapp小程序实现弹幕不重叠 1、在父组件中引入弹幕组件 <template><!-- 弹幕 --><barrage ref"barrage" class"barrage-content" reloadDanmu"reloadDanmu"></barrage> </template> <script>import barr…...

快速排序学习优化

首先&#xff0c;上图。 ‘’’ cpp int partSort(int *a ,int left,int right) {int keyi left; //做左侧基准while(left<right){while(left<right && a[right]>a[keyi]){right--;}while(left<right && a[left]<a[keyi]){left;}swap(a[left…...

微信流量主挑战:三天25用户!功能未完善?(新纪元4)

&#x1f389;【小程序上线第三天&#xff01;突破25用户大关&#xff01;】&#x1f389; 嘿&#xff0c;大家好&#xff01;今天是我们小程序上线的第三天&#xff0c;我们的用户量已经突破了25个&#xff01;昨天还是16个&#xff0c;今天一觉醒来竟然有25个&#xff01;这涨…...

jetson 无显示器配置WIFI

我使用的 jetpack 版本是 6.1&#xff0c;发现自带 NetworkManager 软件包&#xff0c;此软件包包含一个守护程序、一个命令行界面&#xff08;nmcli&#xff09;和一个基于 curses 的界面&#xff08;nmtui&#xff09;。 可以使用 nmcli 命令配置wifi&#xff0c;nmcli 示例…...

SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)

上一节课中我们初步讲解了网关的基本概念、基本功能,并且带大家实战体验了一下网关的初步效果,这节课我们继续学习关于网关的一些更高级有用功能,比如本篇文章的断言。 一、网关主要组成部分 上图中是核心的流程图,最主要的就是Route、Predicates 和 Filters 作用于特定路…...

【ES6复习笔记】ES6的模块化(18)

模块化的概念 模块化是指将一个复杂的系统分解为多个模块&#xff0c;每个模块完成一个特定的功能&#xff0c;模块之间通过接口进行通信。模块化的目的是提高代码的可读性、可维护性和可重用性。 模块化规范产品&#xff0c; ES6 之前的模块化规范有&#xff1a; CommonJS …...

兰亭妙微:专注医疗 UI 设计,点亮数字化医疗新视界

医疗行业界面解决方案以医患使用者为中心&#xff0c;遵循行业使用习惯和表达方式&#xff0c;优化使用流程、设计简洁、人性化的操作界面&#xff0c;采用插画、三维动画、微动效的创作方法&#xff0c;让用户感受到愉悦易用美观的使用体验。蓝蓝设计与知名企业合作项目有&…...

c# 线程 AutoResetEvent 的Set()函数多次调用

本文部分内容摘自ChatGPT 在 C# 中&#xff0c;AutoResetEvent 是一种用于线程同步的机制&#xff0c;它的行为类似于一个信号量&#xff0c;主要用于在多线程环境中发出信号并控制线程的执行。AutoResetEvent 的主要特点是每当调用 Set() 方法时&#xff0c;信号会被设置&…...

汽车行业的MES系统方案(附案例资料合集)

针对汽车行业的MES系统方案&#xff0c;以下是一些关键点和实施案例&#xff1a; 核心功能&#xff1a; 实时监控&#xff1a;MES系统通过传感器和物联网技术实时监控生产线上的每一个环节&#xff0c;确保信息的及时传递。数据分析&#xff1a;系统对收集的数据进行深度分析&a…...

基于监督学习的神经网络控制算法详细介绍和例程

基于监督学习的神经网络控制算法通常用于对已有数据进行训练&#xff0c;以学习输入与输出之间的映射关系。下面我将详细介绍这种算法的原理和流程&#xff0c;并提供一个简单的例程&#xff1a; 算法原理&#xff1a; 输入&#xff1a;给定一组已知的输入信号和对应的输出控制…...

springMVC-请求响应

springmvc——一 站式web框架&#xff0c;核心是处理http请求响应。 前后端分离&#xff1a;需要序列化&#xff0c;服务端把数据序列化成字符串或者流给前端&#xff0c;前端又把json转成对象&#xff0c;前端的叫反序列化。前端把数据序列化转成字符串给服务器&#xff0c;服…...

数据交易和联邦学习的背景下的安全属性

数据交易和联邦学习的背景下的安全属性 在数据交易和联邦学习的背景下,安全属性对于保护数据隐私、确保系统可靠性和维护交易公平性至关重要。以下将分析文章中涉及的安全属性以及分析这些属性的目的。 涉及的安全属性 双向认证:文章虽未明确提及传统意义上的双向认证机制,…...

顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)

文章目录 前言联系我们mod_cti版本支持安全加强说明 前言 FreeSWITCH暴露在公网最大的风险就是被不法之人盗打 出现盗打的主要原因以下几点&#xff1a; 分机密码太简单或者密码泄露了拨号方案配置不合理sofia配置错误 所以我们给顶顶通呼叫中心中间件添加了安全加强功能&am…...

Datawhale-AI冬令营二期

目录 一、番茄时钟&#xff08;1&#xff09;输入Prompt&#xff08;2&#xff09;创建 HTML 文件解析1&#xff1a;HTML结构解析2&#xff1a;计时器内容解析3&#xff1a;按钮区域解析4&#xff1a;脚本引用 &#xff08;3&#xff09;使用JavaScript实现时钟功能解析1&#…...

Python的秘密基地--[章节7] Python 并发与多线程编程

第7章&#xff1a;Python 并发与多线程编程 随着计算机硬件的发展&#xff0c;多核处理器已经成为主流。为了更好地利用多核资源&#xff0c;提高程序的运行效率&#xff0c;Python 提供了并发&#xff08;Concurrency&#xff09;和并行&#xff08;Parallelism&#xff09;编…...

每天五分钟机器学习:凸函数

一、凸函数的定义:何为“凸”? 在数学上,凸函数的概念源于几何直观——想象一个平面上的曲线,如果在这条曲线上的任意两点之间连线段总是位于曲线的下方(或恰好与曲线重合),则这条曲线所对应的函数即为凸函数。更正式地,对于定义在实数集(或某个子集)上的函数f(x),…...

突破资源封装壁垒:RePKG开源工具全维度应用指南

突破资源封装壁垒&#xff1a;RePKG开源工具全维度应用指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 问题&#xff1a;专用资源格式的困境与破局思路 如何突破专用格式的封锁…...

Carsim与Matlab Simulink联合仿真四轮电动汽车转向容错控制模型

Carsim与matlab/simulink联合仿真&#xff0c;线控转向&#xff0c;四轮电动汽车转向失效容错控制模型&#xff0c;提供参考文献 线控转向系统&#xff08;Steer-by-Wire&#xff09;在四轮独立驱动电动汽车中的应用越来越火&#xff0c;但转向失效问题始终是悬在工程师头上的…...

WordPress 短代码与函数重复声明问题的解决方案

在开发 WordPress 博客或网站时,经常会遇到需要将复杂的PHP代码转换为短代码,以便在页面或文章中轻松使用。然而,这其中可能隐藏着一些棘手的问题,比如函数重复声明错误。在这篇博客中,我们将深入探讨这个问题,并提供一个实用的解决方案。 问题描述 假设我们有一个功能…...

Deepseek 1.5B vs 14B实测:游戏本跑大模型选哪个?吞吐量/显存占用/响应速度全对比

Deepseek 1.5B与14B模型实战评测&#xff1a;游戏本部署大语言模型的黄金分割点 当游戏本遇上大语言模型&#xff0c;性能与显存的博弈便成为开发者最头疼的问题。去年还在为能否跑通7B模型发愁的硬件环境&#xff0c;如今已经能流畅运行14B参数规模的模型——这背后是量化技术…...

SenseVoice语音识别问题解决:常见音频格式支持与ITN功能详解

SenseVoice语音识别问题解决&#xff1a;常见音频格式支持与ITN功能详解 1. 音频格式兼容性&#xff1a;你的音频文件能被识别吗&#xff1f; 语音识别系统的第一步就是正确读取音频文件。很多用户在实际使用中遇到的第一个问题往往是&#xff1a;"为什么我的音频文件无…...

Phi-3-Mini-128K多轮对话效果实测:复杂任务规划与分解

Phi-3-Mini-128K多轮对话效果实测&#xff1a;复杂任务规划与分解 最近&#xff0c;我花了不少时间深度体验了Phi-3-Mini-128K这款模型。它的名字里带着“128K”&#xff0c;这超长的上下文长度&#xff0c;让我特别好奇它在处理复杂、多轮对话时的真实表现。毕竟&#xff0c;…...

Phi-4-mini-reasoning惊艳效果:线性代数矩阵运算推理全过程展示

Phi-4-mini-reasoning惊艳效果&#xff1a;线性代数矩阵运算推理全过程展示 1. 模型概述 Phi-4-mini-reasoning是一款仅有3.8B参数的轻量级开源模型&#xff0c;专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这款模型由微软Azure AI Foundry开发&#xff0c;主打"…...

终极指南:如何利用 babel-loader 与 @babel/preset-env 实现现代浏览器智能编译

终极指南&#xff1a;如何利用 babel-loader 与 babel/preset-env 实现现代浏览器智能编译 【免费下载链接】babel-loader &#x1f4e6; Babel loader for webpack 项目地址: https://gitcode.com/gh_mirrors/ba/babel-loader 在现代前端开发中&#xff0c;JavaScript …...

Cursor API限制突破架构设计与系统实现方案

Cursor API限制突破架构设计与系统实现方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial request limit. / T…...

仅剩最后3家银行未完成Java Istio全面替换——这份含12类Java Agent冲突检测脚本、4种Sidecar注入模式对比的适配手册即将下线

第一章&#xff1a;Java Istio适配现状与收官倒计时Istio 1.20 是最后一个官方支持 Java 客户端&#xff08;istio-java-api&#xff09;的版本&#xff0c;自 1.21 起&#xff0c;Istio 社区正式移除了对 Java SDK 的维护和 CI 验证。这一决策标志着 Java 生态在 Istio 原生控…...