12.3.3 Shell script 的默认变量($0, $1...)

news2024/10/7 18:30:46

举例来说,如果你想要重新启动系统的网络,可以这样做:

script 是怎么达成这个功能的呢?其实 script 针对参数已经有设置好一些变量名称了!对应如下:

执行的脚本文件名为 $0 这个变量,第一个接的参数就是 $1 。 所以,只要我们在 script 里面善用 $1 的话,就可以很简单的立即下达某些指令功能了!除了这些数字的变量之外, 我们还有一些较为特殊的变量可以在 script 内使用来调用这些参数:

$# :代表后接的参数“个数”,以上表为例这里显示为“ 4 ”;

$@ :代表“ "$1" "$2" "$3" "$4" ”之意,每个变量是独立的(用双引号括起来);

$* :代表“ "$1c$2c$3c$4" ”,其中 c 为分隔字符,默认为空白键, 所以本例中代表“ "$1 $2 $3 $4" ”之意。

shift:造成参数变量号码偏移

执行成果如下:

12.4 条件判断式

12.4.1 利用 if .... then

单层、简单条件判断式

&& 代表 AND ;

|| 代表 or ;

所以,在使用中括号的判断式中, && 及 || 就与指令下达的状态不同了。举例来说,ans_yn.sh 里面的判断式可以这样修改:

[ "${yn}" == "Y" -o "${yn}" == "y" ] 上式可替换为 [ "${yn}" == "Y" ] || [ "${yn}" == "y" ]

多重、复杂条件判断式

在同一个数据的判断中,如果该数据需要进行多种不同的判断时,应该怎么作?举例来说,上面的 ans_yn.sh 脚本中,我们只要进行一次 ${yn} 的判断就好 (仅进行一次 if ),不想要作多次 if 的判断。 此时你就得要知道下面的语法了:

如果考虑更复杂的情况,则可以使用这个语法:

12.4.2 利用 case ..... esac 判断

上个小节提到的“ if .... then .... fi ”对于变量的判断是以“比对”的方式来分辨的, 如果符合状态就进行某些行为,并且通过较多层次 (就是 elif ...) 的方式来进行多个变量的程序码撰写。

要注意的是,这个语法以 case (实际案例之意) 为开头,结尾自然就是将 case 的英文反过来写。另外,每一个变量内容的程序段最后都需要两个分号 (;;) 来代表该程序段落的结束,这挺重要的。至于为何需要有 * 这个变量内容在最后呢?这是因为,如果使用者不是输入变量内容一或二时, 我们可以告知使用者相关的信息。

12.4.3 利用 function 功能

什么是“函数 (function)”功能?简单的说,其实, 函数可以在 shell script 当中做出一个类似自订执行指令的东西,最大的功能是, 可以简化我们很多的程序码。举例来说,上面的show123.sh 当中,每个输入结果 one, two, three 其实输出的内容都一样,那么我就可以使用 function 来简化了! function 的语法是这样的:

那个 fname 就是我们的自订的执行指令名称~而程序段就是我们要他执行的内容了。 要注意的是,因为 shell script 的执行方式是由上而下,由左而右, 因此在 shell script 当中的function 的设置一定要在程序的最前面, 这样才能够在执行时被找到可用的程序段。

以上面的例子来说,做了一个函数名称为 printit ,所以,当我在后续的程序段里面, 只要执行 printit 的话,就表示我的 shell script 要去执行“ function printit .... ”

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

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

相关文章

AOP操作日志记录(将增、删、改相关接口的操作日志记录到数据库表中)

1.1 需求 需求:将案例中增、删、改相关接口的操作日志记录到数据库表中 就是当访问部门管理和员工管理当中的增、删、改相关功能接口时,需要详细的操作日志,并保存在数据表中,便于后期数据追踪。 操作日志信息包含:…

mac电脑清理系统占用空间清理优化操作教程

mac系统广受用户的喜爱和信赖。但是,很多mac用户可能会发现,随着使用时间的增长,mac系统占用的空间越来越大,导致电脑运行缓慢,甚至出现磁盘空间不足的提示。那么,mac系统内存为什么那么大?mac清…

解析国产音频数模转换芯片的应用领域

数模转换器是用于数模转换的设备。数字信号定义为时间离散和幅度信号离散。同时,将模拟信号定义为时间连续和连续幅度信号。数模转换器将定点二进制数字(适当的抽象精度数字)转换为物理测量结果。数模转换器基于Nyquist-Shannon采样定理工作。它指出:如果采样率大于…

OJ练习第143题——二叉树展开为链表

二叉树展开为链表 力扣链接:114. 二叉树展开为链表 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终…

多个deb包合并成一个deb包的方法

文章目录 前言一 deb基础知识1.1 目录结构1.2 包结构说明 二、多个deb包合并一个deb包2.1 下载离线deb包2.2 解压安装包2.3 deb包合并 三、使用合并deb包可能存在的问题四、总结 前言 在UOS系统中默认没有开启开发者模式,此时若需要安装多个deb包时,只能…

最短路算法(Dijkstra Bellman-Ford SPFA Floyd)

目录 最短路算法总览Dijkstra算法1.朴素Dijkstra算法算法步骤算法应用Dijkstra求最短路Ⅰ 2.堆优化Dijkstra算法算法步骤算法应用Dijkstra求最短路Ⅱ Bellman-Ford算法算法步骤算法应用有边数限制的最短路 SPFA算法算法步骤算法应用1. spfa求最短路2. spfa判断负环 Floyd算法算…

STM32MP157驱动开发——GPIO 和 和 Pinctrl 子系统的概念

文章目录 Pinctrl 子系统重要概念概述重要概念pin controller:client device: 代码中怎么引用 pinctrl GPIO 子系统重要概念概述在设备树中指定引脚在驱动代码中调用 GPIO 子系统头文件常用函数实例: BSP工程师针对芯片的寄存器写Pinctrl子系…

代码随想录day25

216. 组合总和 III 这道题和昨天的相似的地方,但是也有不同的特点。这道题规定了数字范围是从1-9,并且一个组合中,不能出现同样的元素,比如说[1,2,2]这个就不可以,如果取过2之后,就只…

在Visual C++中进行类设计的通行做法(下)——类的运行

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下在Visual C中进行类设计的通行做法,这一篇帖子来看看在搭建好基本架构并调整好重复定义问题后,怎么个运行法。程序员新手会去看很多书,但是书中往往…

安装centos7 ping不通宿主机

1、安装Virbox虚拟机 2、安装centos 7镜像 主要有两点配置需要注意: A:磁盘分区 B:网络设置,今天的实验主要是卡在网络配置这里 网络设置,使用的是仅主机模式且是手动分配静态IP,要点说明 看宿主机所用的网络是哪个,查看window的…

OC时钟/BC时钟介绍、Windows/Linux环境查看时钟频率

一、OC时钟和BC时钟介绍 OC时钟和BC时钟是指计算机体系结构中的两种不同的时钟信号。 OC时钟(Off-chip clock)是指在计算机系统的主板或外部设备上产生的时钟信号,它通过总线传输到CPU中,控制着CPU与主板或外部设备之间的数据传…

Vue简介、生命周期、模版语法、条件渲染、列表渲染、style和class绑定

目录 简介 Vue基本渲染-插值和数据模型 MVVM 生命周期 模版语法 条件渲染 v-if ​编辑 v-show 列表渲染 key style绑定 class绑定 简介 Vue是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只…

Docker 多主机部署:构建容器集群的最佳实践,助力高可用性与负载均衡

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

加载Ubuntu开发环境-iTOPRK3568开发板

配套视频: 安装虚拟机 ubuntu 系统:B站搜索北京迅为RK3568开发板 在 2.3 小节解压了迅为提供的 ubuntu 镜像,然后打开虚拟机,如下图所示: 点击上图中的红色框,选择在 2.3 小节中解压的 Ubuntu18 文件夹下…

oracle单个用户最大连接数限制

项目经理反馈,现场已做了单个用户的最大连接数2000的限制,但数据库还是报无法连接,故障用户的连接数已3800多了。 查看日志报错如下 2023-07-20T13:07:57.79465308:00 Process m000 submission failed with error 20 Process m000 submiss…

Matlab对FS32K144编程--串口通讯

1、配置系统运行周期10ms 2、设置串口通讯通道为通道1,波特率设为9600 3、设置串口发送-100ms发送一次 4、设置接收中断接收数据 5、编译下载,串口发送消息

go使用gin结合jwt做登录功能

1、安装gin go get -u github.com/gin-gonic/gin 2、安装session go get github.com/gin-contrib/sessions 3、安装JWT鉴权 go get "github.com/golang-jwt/jwt/v4" 4、创建一个jwt的工具文件 package utilsimport ("errors""github.com/golan…

共享汽车管理系统nodejs+vue

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 前端nodejsvueelementui, 共享汽车管理系统的系统管理员可以管理用户,可以对用户信息修改删除以及查询操作。具体界面的展…

JQ-3 jQuery事件处理(click和on的区别、事件冒泡、事件对象、事件委托、小案例); jQuery动画(常见动画函数、动画队列、小案例)

目录 1_ jQuery事件处理1.1_认识事件(Event)1.2_click和on的区别1.3_ jQuery的事件冒泡1.4_jQuery的事件对象( Event Object)1.5_ jQuery的事件委托(event delegation)1.6_ jQuery常见的事件1.7_小案例 2_ jQuery 动画2.1_介绍2.2…

【力扣每日一题】2023.7.23 接雨水

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 接雨水是力扣里非常经典的一道单调栈的题目,使用单调栈的做法就是从左到右将高度依次入栈,保持栈内从栈顶…