13 学习 shell scripts

单片机技术入门与实战:从零基础到项目开发 单片机(MCU)作为嵌入式系统的核心组件,集成了CPU、内存和各种接口电路,广泛应用于智能家居、工业控制和汽车电子等领域。其工作原理基于实时控制和低功耗设计,通过定时器、中断系统和通信接口等功能模块实现各种控制任务。在物联网和智能硬件快速发展的背景下,掌握单片机开发技术成为电子工程师的重要技能。本文以STM32和PIC系列为例,详细解析单片机的基本概念、功能模块和选型指南,并分享从入门到项目实战的系统学习方法,帮助开发者在3-6个月内快速掌握这一关键技术。 阅读详情
shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。shell script 可以简单的被看成是批量文件, 也可以被说成是一个程序语言,且这个程序语言由于都是利用 shell 与相关工具命令, 所以不需要编译即可运行,且拥有不错的除错 (debug) 工具,所以,他可以帮助系统管理员快速的管理好主机。

Linux 系统的服务 (services) 启动的介面是在 /etc/init.d/ 这个目录下,目录下的所有文件都是 scripts 。


 /home/dmtsai/shell.sh运行这个文件?

1.直接命令下达: shell.sh 文件必须要具备可读与可运行 (rx) 的权限,然后:

  • 绝对路径:使用 /home/dmtsai/shell.sh 来下达命令;
  • 相对路径:假设工作目录在 /home/dmtsai/ ,则使用 ./shell.sh 来运行
  • 变量『PATH』功能:将 shell.sh 放在 PATH 指定的目录内,例如: ~/bin/
2.以 bash 程序来运行:透过『 bash shell.sh 』或『 sh shell.sh 』来运行

script 的运行方式差异 (source, sh script, ./script)
  • 利用直接运行的方式来运行 script当使用直接命令下达 (不论是绝对路径/相对路径还是 $PATH 内),或者是利用 bash (或 sh) 来下达脚本时, 该 script 都会使用一个新的 bash 环境来运行脚本内的命令!也就是说,使用者种运行方式时, 其实 script 是在子程序的 bash 内运行的!
  • 利用 source 来运行脚本:在父程序中运行e.g. source sh02.sh     sh02.sh 会在父程序中运行的,因此各项动作都会在原本的 bash 内生效!


利用 test 命令的测试功能

test -e /dmtsai
关于某个档名的『文件类型』判断,如 test -e filename 表示存在否
-e 该『档名』是否存在?(常用)
-f 该『档名』是否存在且为文件(file)?(常用)
-d 该『档名』是否存在且为目录(directory)?(常用)


利用判断符号 [ ]
[ -z "$HOME" ] ; echo $?
使用中括号必须要特别注意,因为中括号用在很多地方,包括通配符与正规表示法等等,所以如果要在 bash 的语
法当中使用中括号作为 shell 的判断式时,必须要注意中括号的两端需要有空白字节来分隔!
注意:
在中括号 [] 内的每个组件都需要有空白键来分隔;
在中括号内的变量,最好都以双引号括号起来;
在中括号内的常数,最好都以单或双引号括号起来。

中括号的使用方法与 test 几乎一模一样, 只是中括号比较常用在条件判断式 if ..... then ..... fi 的情况。  


Shell script 的默认变量($0, $1...)
/path/to/scriptname  opt1  opt2  opt3  opt4 
       $0                        $1       $2     $3      $4
$# :代表后接的参数『个数』,以上表为例这里显示为『 4 』;
$@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来);
$* :代表『 "$1c$2c$3c$4" 』,其中 c 为分隔字节,默认为空白键, 所以本例中代表『 "$1 $2 $3 $4" 』之意
。


单层、简单条件判断式
如果你只有一个判断式要进行,那么可以简单的这样看:
if [  条件判断式  ]; then
         当条件判断式成立时,可以进行的命令工作内容;
fi   <==将 if 反过来写,就成为 fi !结束 if 之意!

多个条件判断 (if ... elif ... elif ... else) 分多种不同情况运行
if [  条件判断式一  ]; then
    当条件判断式一成立时,可以进行的命令工作内容;
elif [ 条件判断式二 ]; then
    当条件判断式二成立时,可以进行的命令工作内容;
else
     当条件判断式一与二均不成立时,可以进行的命令工作内容;

fi


利用 case ..... esac 判断
case  $变量名称 in   <==关键字为 case ,还有变量前有钱字号
  "第一个变量内容")   <==每个变量内容建议用双引号括起来,关键字则为小括号 )
                       程序段
                           ;;            <==每个类别结尾使用两个连续的分号来处理!
  "第二个变量内容")
                      程序段
                           ;;
  *)                  <==最后一个变量内容都会用 * 来代表所有其他值
                     不包含第一个变量内容与第二个变量内容的其他程序运行段
                     exit 1
                           ;;
esac                  <==最终的 case 结尾!『反过来写』思考一下!

利用 function 功能
function fname() {
程序段
}
function 也是拥有内建变量的~他的内建变量与 shell script 很类似, 函数名称代表示 $0 ,而后续接的变量也是以 
$1, $2... 来取代的。

while do done, until do done (不定回圈)
while [ condition ]  <==中括号内的状态就是判断式
do            <==do 是回圈的开始!
         程序段落
done          <==done 是回圈的结束

until [ condition ]
do
         程序段落
done
当 condition 条件成立时,就终止回圈, 否则就持续进行回圈的程序段。

for...do...done (固定回圈)
for var in con1 con2 con3 ...
do
          程序段
done
以上面的例子来说,这个 $var 的变量内容在回圈工作时:
第一次回圈时, $var 的内容为 con1 ;
第二次回圈时, $var 的内容为 con2 ;
第三次回圈时, $var 的内容为 con3 ;
....

for...do...done 的数值处理

除了上述的方法之外,for 回圈还有另外一种写法!语法如下:
for (( 初始值; 限制值; 运行步阶 ))
do
          程序段
done
初始值:某个变量在回圈当中的起始值,直接以类似 i=1 配置好;
限制值:当变量的值在这个限制值的范围内,就继续进行回圈。例如 i<=100;
运行步阶:每作一次回圈时,变量的变化量。例如 i=i+1。

shell script 的追踪与 debug
 sh [-nvx] scripts.sh
选项与参数:
-n  :不要运行 script,仅查询语法的问题;
-v  :再运行 sccript 前,先将 scripts 的内容输出到萤幕上;
-x  :将使用到的 script 内容显示到萤幕上,这是很有用的参数!

总结:

  1. shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的shell script 用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上, 就不够好了,因为 Shell scripts 的速度较慢,且使用的 CPU 资源较多,造成主机资源的分配不良。
  2. 在 Shell script 的文件中,命令的运行是从上而下、从左而右的分析与运行;
  3. shell script 的运行,至少需要有 r 的权限,若需要直接命令下达,则需要拥有 r 与 x 的权限;
  4. 良好的程序撰写习惯中,第一行要宣告 shell (#!/bin/bash) ,第二行以后则宣告程序用途、版本、作者等
  5. 对谈式脚本可用 read 命令达成;
  6. 要创建每次运行脚本都有不同结果的数据,可使用 date 命令利用日期达成;
  7. script 的运行若以 source 来运行时,代表在父程序的 bash 内运行之意!
  8. 若需要进行判断式,可使用 test 或中括号 ( [] ) 来处理;
  9. 在 script 内,$0, $1, $2..., $@ 是有特殊意义的!
  10. 条件判断式可使用 if...then 来判断,若是固定变量内容的情况下,可使用 case $var in ... esac 来处理
  11. 回圈主要分为不定回圈 (while, until) 以及固定回圈 (for) ,配合 do, done 来达成所需任务!
  12. 我们可使用 sh -x script.sh 来进行程序的 debug

K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点 分类知识   分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中。机器学习中常见的分类算法有:SVM(支持向量机)、KNN(最邻近法)、Decision Tree(决策树分类法)、Naive Bayes(朴素贝叶斯分类)、Neural Networks(神经网络法)等。   但当对海量数据进行分类时,为了降低数据满足分类算法要求所需要的预处理代价,往往需要选... 阅读详情

相关推荐

Qt开发者必看:QTimer::singleShot的5个实战避坑指南(含lambda和多线程案例)

本文为Qt开发者提供了QTimer::singleShot的5个关键实战避坑指南,涵盖lambda捕获、对象生命周期和多线程安全等核心难点。通过对比错误与正确代码示例,深入解析了如何避免悬空指针、确保线程执行上下文正确以及管理定时任务资源,帮助开发者编写更健壮、可靠的延迟执行代码。

stem5的博客 466

Linux学习Shell Script总结

1、Shell script是利用shell的功能所写的一个“程序”,这个程序是使用纯文本文件,将一些shell的语法与命令写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的 2、shell script用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上就不够好了,因为shell script的速度较慢,且使用的cpu资源较多,造成主机资源的分配不良。...

赫家旺的博客 716

FortiGate-60E防火墙忘记密码?用Console线+TFTP重装固件v7.0.9全流程

本文详细介绍了当FortiGate-60E防火墙忘记密码且物理重置无效时,如何通过Console线连接并利用TFTP服务器重装固件(如v7.0.9)的全流程。从恢复原理、工具准备、网络配置到逐步执行命令,提供了完整的实战指南,帮助管理员彻底恢复设备出厂设置并重置密码。

snow3的博客 333

shell 翼要

function: function fname(){ 程序段 } for…do…done的数值处理 for ( (初始值;限制值;执行步长) ) do 程序段 done shell的追踪与调试 sh [-nvx] xxxx.sh -n 不执行,仅仅检查语法问题 -v 执行前,先将内容输出到屏幕 -x 将使用到的内容显示到屏幕上(很有用的参数) 脚本的执行需要至少需要文件的 r 的权限...

a501868354的博客 599

基于立创EDA的8口全千兆POE交换机设计详解:RTL8370N芯片与90W大功率供电方案

本文详细解析了基于立创EDA设计的8口全千兆POE交换机方案,核心采用RTL8370N交换芯片与支持90W大功率供电的IEEE 802.3bt标准PD芯片。文章深入探讨了PSE/PD供电管理、电源架构设计、电路细节及关键散热方案,为DIY或学习POE交换机硬件设计提供了完整的开源实践指南。

weixin_29050829的博客 1万+

工业数据采集实战:用open62541库读写PLC的OPC UA节点(避坑指南)

本文详细介绍了如何使用open62541库实现工业PLC的OPC UA节点数据采集,涵盖环境搭建、节点读写优化及生产环境故障排查。通过订阅模式和多节点读写技术,显著提升数据采集效率与稳定性,适用于智能制造和工业物联网场景。

weixin_30598225的博客 399

Shell Scripts

  shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。 shell script 的撰写中注意事项: 指令的执行是从上而下、从左而右的分析与执行; 指令的下达就如同第四章内提到的: 指令、选项与参数...

Cdreamfly的博客 1034

目标检测YOLO实战应用案例100讲-基于数据融合的SAR图像中海上目标检测与跟踪(中)

本文使用的数据集为欧空局(European Space Agency, ESA)提供的Sentinal-1 数据集,Sentinel-1是欧洲“哥白尼计划”的SAR卫星机群,主要是用于陆地和海 洋服务的极地轨道全天候昼夜雷达成像任务[ 34]。Sentinel-1A于2014年4月3日发 射升空,Sentinel-1B于2016年4月25日发射升空,每颗卫星都携带C波段SAR, 共同提供地球表面的全天候、昼夜图像。

qq_36130719的博客 356

条件判断式

1. 条件判断式 1.1 利用 if…then if…then是最常见的条件判断式,当符合某个条件判断的时候,就予以进行某项任务 1.1.0 单层、简单条件判断式

一个搬运知识的笨小孩 856

JavaSwing_4.2: JDialog、JOptionPane(对话框)

JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。

谢TS的博客 7万+

24、中性原子量子计算:原理、方法与实验

本文系统介绍了中性原子量子计算的原理、方法与实验进展。重点阐述了利用碱金属原子作为量子比特,通过磁光阱、光偶极阱和光晶格等技术实现原子捕获与控制的方法。同时,详细分析了单量子比特门操作和量子态工程的实现手段,并总结了相关实验结果与未来发展方向。该技术路线为构建大规模量子计算系统提供了可行方案。

ol789012的博客 244

Linux课本课后题答案

一、选择题 1. Linux最早是由计算机爱好者B 开发的。 A. Richard Petersen B. Linus Torvalds C. Rob Pick D. Linux Sarwar 2. 下列C 是自由软件。 A. Windows XP B. UNIX C. Linux D. Windows 2000 3. 下列B 不是Linux的特点。 A. 多任务 B. 单用户 C. 设备独立性 D. 开放性...

Name Yan 3万+

Harness Engineering:让Coding Agent真正落地生产

本文将带你系统性地了解如何让Coding Agent真正落地生产,核心是依托(全球领先的持续交付、云成本管理、 feature flagging、安全治理一体化平台),结合企业级AIDD(AI-Driven Development)的工程化实践,构建一套可信赖、可观测、可扩展、可治理的Coding Agent落地体系。核心概念与理论基础:什么是Coding Agent?它和普通的AI代码补全工具(比如GitHub Copilot)有什么区别?什么是Harness Engineering?

移动开发前沿的博客 455

第13章、 学习 Shell Scripts

13.1. 什么是 Shell Script 什么是 shell script (程序化脚本) 呢?就字面上的意义,我们将他分为两部份。 在『 shell 』部分,我们在 十一章的 BASH 当中已经提过了,那是一个文字接口底下让我们与系统沟通的一个工具接口。那么『 script 』是啥? 字面上的意义, script 是『脚本、剧本』的意思。整句话是说, shell script 是针对 s...

kk53976047的博客 712

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

第13章 学习shell scripts

1. 什么是shell scripts

牛志欢的专栏 406

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

13章 学习Shell Scripts

何为Shell Scripts Scripts就是外部程序指令以及bash里面内建指令的组合,再加上一些逻辑表达、正规表达式、管道命令、数据重导向等功能,就可以构成编程之法了。因为里面都是已经存在的程序或者指令,所以其并不用编译就可以直接运行。最简单的脚本就是许多命令行组合在一起。 简单执行sh的方法,通过bash my.sh(不论有无x权限都可以执行)或者 ./my.sh(加入此文件有执行权限,但

一个菜鸟的博客 608

chapte13:学习shell scripts之(1)简单的shell scripts

  简单的说就是将一些shell的语法与命令写在里面,加上正则表达式,管道命令与数据流重定向等功能,以达到我们想要的目的。   shell scripts用在系统管理上是一个很好的工具,但是用在处理大量计算时,则速度不够,且使用的CPU资源较多。 一。第一个scripts编写与执行 假设的我们写的第一个scripts文件名为shell.sh,执行的方法有如下几种: (1)直接命令...

djai0102的博客 155

Linux学习笔记(13)——shell scripts

1) shellscripts简介 a)  shellscripts执行方式 直接命令下达:shell.sh档案必须拥有rw权限; 以bash程序来执行:bash shell.sh或者sh shell.sh; b)  helloworld! 我们使用的是 bash ,所以,必须要以『 #!/bin/bash 』来宣告这个档案内的语法使用 bash 的语法. 若前一个命令执行正确,变

亡羊补牢 705

shell -- 第13章   学习 Shell Scripts

if判断:switch选择:for循环:while循环:函数: 转载于:https://blog.51cto.com/eread/1323517

weixin_33949359的博客 99

chapte13:学习shell scripts之(4)循环

一。while循环 输入 sh sh14.sh 100 结果为5050 二。for循环 输入一个文件名,显示文件下面的文件的权限 运行结果 三。for的数值计算 转载于:https://www.cnblogs.com/chuiyuan/p/5107566.html...

djai0102的博客 142

chapte13:学习shell scripts之(2)判断式的使用

一。利用test命令的测试功能 里面有用到变量的累加。 二。判断标志 文件名的文件类型判断 -e:文件名是否存在 -f:文件名是否存在且为文件 -d:文件名是否存在且为目录 文件的权限检测 -r, -w, -x 两个文件之间的比较 两个整数的比较字符串判定 -z:判断字符串是否为空,若是则返回true -n:与-z相反,可以省略 =: != 多重条...

djai0102的博客 143

鸟哥的 Linux 私房菜第13章-学习 Shell Scripts 学习笔记

注意事项: 1. 指令的执行是从上而下、从左而右的分析与执行; 2. 指令的下达就如同第五章内提到的: 指令、选项与参数间的多个空白都会被忽略掉; 3. 空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空格键; 4. 如果读取到一个 Enter 符号 (CR) ,就尝试开始执行该行 (或该串) 命令; 5. 至于如果一行的内容太多,则可以使用『 \[Enter] 』来延

Michael Wing's workspace 928

鸟哥私房菜--第13章 学习 Shell Scripts(4)

第十三章、学习 Shell Scripts   4. 条件判断式   4.1 利用 if .... then: 单层简单条件,多重复杂条件, 检验$1内容, 网络状态,退伍   4.2 利用 case ..... esac 判断   4.3 利用 function 功能 条件判断式 只要讲到『程序』的话,那么条件判断式,亦即是『 if

yangdayin的专栏 1529

鸟哥私房菜--第13章 学习 Shell Scripts(3)

第十三章、学习 Shell Scripts 最近升级日期:2009/02/18 3. 善用判断式   3.1 利用 test 命令的测试功能   3.2 利用判断符号 [ ]   3.3 Shell script 的默认变量($0, $1...): shift 善用判断式 在第十一章中,我们提到过 $? 这个变量所代表的意义,此外,也透过

yangdayin的专栏 1378

鸟哥私房菜--第13章 学习 Shell Scripts(5)

第十三章、学习 Shell Scripts   5. 回圈 (loop)   5.1 while...do...done, until...do...done (不定回圈)   5.2 for...do...done (固定回圈): 帐号检查,网络状态 $(seq )   5.3 for...do...done 的数值处理 回圈 (loop) 除

yangdayin的专栏 1479

鸟哥私房菜--第13章 学习Shell scripts(6)

第十三章、学习 Shell Scripts       6. shell script 的追踪与 debug shell script 的追踪与 debug scripts 在运行之前,最怕的就是出现语法错误的问题了!那么我们如何 debug 呢?有没有办法不需要透过直接运行该 scripts 就可以来判断是否有问题呢?呵呵!当然是有的!我们就直接

yangdayin的专栏 953

chapte13:学习shell scripts之(3)条件判断式

执行结果 function的使用 function带参数,也是使用的$0,$1 执行结果 转载于:https://www.cnblogs.com/chuiyuan/p/5104190.html

djai0102的博客 85
上一篇: 12 正规表示法与文件格式化处理
下一篇: 14 Linux 账号管理与 ACL 权限配置
otuhacker
博客等级 码龄18年 21粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值