shell脚本中的变量,运算符

1.脚本格式

我们一般将shell脚本写在xxx.sh文件中,执行的时候bash/sh  xxx.sh  注意文件路径

 xxx.sh文件中的第一行为   #!/usr/bin/bash 注代表我们使用的是bin文件夹下的bash解释器(此条为注释语句,不写也可以)

2.echo用法   相当与print

示例1:定义变量a,输出变量a的值(都是在终端中输入)
a=5
echo $a示例2:创建一个Shell脚本 helloworld.sh,输出 helloworld[atguigu@hadoop101 shells]$ touch helloworld.sh   #新建 helloworld.sh 文件
[atguigu@hadoop101 shells]$ vim helloworld.sh在 helloworld.sh 中输入如下内容
#!/bin/bash
echo "helloworld"[atguigu@hadoop101 shells]$ bash helloworld.sh    #执行 helloworld.sh 文件,输出helloworld

3.变量的定义 

(1)定义变量:变量名=变量值,注意,=号前后不能有空格,如有空格,会当成指令
(2)撤销变量:unset 变量名
(3)声明局部变量:readonly 变量名=变量值,注意:局部变量不能 unset    
  (4)  export 变量名:可把变量提升为全局环境变量

变量定义规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建
         议大写。
(2)等号两侧不能有空格
(3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4)变量的值如果有空格,需要使用双引号或单引号括起来。 

4.特殊变量 $n,$#,$*,$@

4.1 $n

$n : n 为数字, $0 代表该脚本名称, $1-$9 代表第一到第九个参数,十以 上的参数,十以上的参
         数需要用大括号包含,如${10}
$#:   功能描述:获取所有 输入参数个数 ,常用于循环 , 判断参数的个数是否正确以及加强脚本的健
        壮性
$* :这个变量代表命令行中所有的参数, $* 把所有的参数看成一个整体
$@ :这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待
$ ? :最后一次执行的命令的返回状态。如果这个变量的值为 0 ,证明上一 个命令正确执行;如果这个变量的值为非 0 (具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确了。
示例1
[atguigu@hadoop101 shells]$ touch parameter.sh
[atguigu@hadoop101 shells]$ vim parameter.sh#!/bin/bash                                #parameter.sh中的内容
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
echo '==========$@=========='
echo $@[atguigu@hadoop101 shells]$ bash parameter.sh cls xz   #其中cls,xz分别为变量1,变量2==========$n==========             #下面为输出内容
./parameter.sh
cls
xz
==========$#==========
2
==========$*==========
cls xz
==========$@==========
cls xz示例2
[atguigu@hadoop101 shells]$ bash helloworld.sh
hello world
[atguigu@hadoop101 shells]$ echo $?       #判断helloworld.sh有没有正常执行
0

5.运算符

 5.1运算式

语法:“$(( 运算式 ))” “$[ 运算式 ]”
示例:计算(2+3)* 4 的值
[atguigu@hadoop101 shells]# S=$[(2+3)*4]
[atguigu@hadoop101 shells]# S=$(((2+3)*4))[atguigu@hadoop101 shells]# echo $S

 5.2条件判断

语法: test condition  或 [ condition ]注意 condition 前后要有空格

注意:条件非空即为 true[ atguigu ]返回 true[ ] 返回 false

下图为常用的判断条件:

23 是否大于等于 22
[atguigu@hadoop101 shells]$ [ 23 -ge 22 ]
[atguigu@hadoop101 shells]$ echo $?
0helloworld.sh 是否具有写权限
[atguigu@hadoop101 shells]$ [ -w helloworld.sh ]
[atguigu@hadoop101 shells]$ echo $?
0多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一
条命令执行失败后,才执行下一条命令)
&&表示与,||表示或,类似于C++
[atguigu@hadoop101 ~]$ [ atguigu ] && echo OK || echo notOK
OK
[atguigu@hadoop101 shells]$ [ ] && echo OK || echo notOK
notOK

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

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

相关文章

ASP.NET Core 自定义解压缩提供程序

写在前面 在了解ASP.NET Core 自定义请求解压缩中间件的应用时,依据官方文档操作下来碰到了几个问题,这边做个记录。 关键点就是配置 Content-Encoding,参数需要和代码中添加的提供程序的Key保持一致; builder.Services.AddRequ…

9、C语言复习

目录 1、位操作 2、define宏定义关键词 3、ifdef条件编译 4、extern变量申明 5、typedef类别别名 6、结构体 7、static关键字 1、位操作 &&#xff1a;按位与 |&#xff1a;按位或 ^&#xff1a;按位异或 ~&#xff1a;取反 <<&#xff1a;左移 >>…

【实战知识】使用Github Action + Nginx实现自动化部署

大家好啊,我是独立开发豆小匠。 先说一下背景~ 我的小程序:豆流便签,目前使用云托管部署后端服务,使用轻量级服务器部署数据库和一些中间件。 因此服务器成本:云托管 + 云服务器 云托管每周花费5元,一个月就是50,一年就是500啊,所以这期准备把云托管优化掉! 1. 需…

x-shell安装、使用以及配置cuda、cudnn和conda

x-shell安装、使用以及安装最新版本conda x-shell安装远程连接服务器conda安装和环境配置 x-shell安装 x-shell是一款终端模拟软件&#xff0c;用于在Windows界面下远程访问和使用不同系统下的服务器。免费版本下载地址&#xff1a; https://www.xshell.com/zh/free-for-home-…

java常用工具类【如spring 常用工具类,IO流常用工具类等】,持续更新

java常用工具类&#xff0c;持续更新 import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.util.ResourceUtils; import org.springfra…

【QT+QGIS跨平台编译】之二十六:【SpatialIndex+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、SpatialIndex介绍二、文件下载三、文件分析四、pro文件五、编译实践一、SpatialIndex介绍 SpatialIndex是一个用于高效处理空间数据的C++库,基于R树索引结构实现。它提供了一系列的空间操作和查询算法,能够快速地对大规模空间数据进行检索和分析。 SpatialInd…

【Django】如何设置支持多语种网站,中文/英文网站

首先&#xff0c;需要明确一点&#xff1a;我们要实现的中英对照翻译&#xff0c;这个翻译不是浏览器翻译的&#xff0c;也不是Django帮你翻译。这个需要你自己事先手动翻译好&#xff0c;存放在专门翻译文件中&#xff0c;Django只是事后调用而已。 第一步 新建项目后&#x…

【Django-ninja】使用Django ninja 进行auth鉴权

1. 使用django_auth django_auth其实就是SessionAuth类鉴权方式。 使用Django自带的auth模块&#xff0c;通过/login实现登录&#xff0c;然后可以访问/api_withdjango_auth。 通过/logout可以退出登录。 from django.contrib import authclass LoginSchema(Schema):user:s…

[职场] 英语面试自我介绍 #微信#笔记#媒体

英语面试自我介绍 英语面试自我介绍1 I am very happy to introduce myself here.I was born in Liaoning Province.I graduated from Nankai University and majored in International Trade.I like music and reaing books,especially economical books.It is my honor to ap…

测试人员的自我修养

QAS:是负责检查和评估软件产品质量的专业人员&#xff0c;他们通过执行一系列测试来确保软件产品的功能、性能和安全性符合设计要求。 当产品上线后&#xff0c;有 bug&#xff1a; “测试为什么没有测试发现这个问题&#xff1f;肯定是测试的责任&#xff01;” 当产品上线…

LabVIEW CVT离合器性能测试

介绍了CVT&#xff08;连续变速器&#xff09;离合器的性能测试的一个应用。完成了一个基于LabVIEW软件平台开发的CVT离合器检测与控制系统&#xff0c;通过高效、准确的测试方法&#xff0c;确保离合器性能达到最优。 系统采用先进的硬件配合LabVIEW软件&#xff0c;实现了对…

C语言在Visual Studio 2010环境下使用<regex.h>正则表达式函数库

在Visual Studio 2010环境下&#xff0c;如果C语言想要使用<regex.h>头文件进行正则表达式匹配&#xff0c;则需要pcre3.dll这个动态链接库&#xff0c;可以去网上下载。 下载的网址是&#xff1a;Pcre for Windowspcre {whatisit}https://gnuwin32.sourceforge.net/pac…

[Python] scikit-learn中数据集模块介绍和使用案例

sklearn.datasets模块介绍 在scikit-learn中&#xff0c;可以使用sklearn.datasets模块中的函数来构建数据集。这个模块提供了用于加载和生成数据集的函数。 API Reference — scikit-learn 1.4.0 documentation 以下是一些常用的sklearn.datasets模块中的函数 load_iris() …

机器学习算法之分类和回归树(CART)

分类和回归树(Classification and Regression Trees,CART)是一种强大的机器学习算法,用于解决分类和回归问题。本篇博文将深入介绍CART算法的工作原理、应用领域以及Python示例。 算法背景 CART算法最早由Leo Breiman等人于1984年提出,它是一种决策树算法,用于将数据集…

Linux下安装anaconda并配置环境变量

1、anaconda安装&#xff1a; 将下载anaconda镜像sh&#xff0c;然后用sh命令执行安装&#xff1a;sh Anaconda3-2021.05-Linux-x86_64.sh 一直回车或yes&#xff0c;默认安装即可 -----------------------------------------------------------------------------------------…

MySQL JSON数据类型使用和说明

目录 1. JSON数据类型简介 2. 创建含有JSON列的表 3. 插入JSON数据 4. 查询JSON数据 5. 更新JSON数据 6. JSON数据类型的限制 7. JSON函数和操作符 8.JSON数据类型性能考量 9. 使用场景推荐 3. 总结建议 1. JSON数据类型简介 MySQL从5.7版本开始引入了JSON&#xff0…

2021-09-23 51蛋骗鸡单按键计数实现不同功能不同写法占用空间比较

缘由小容量的单片机芯片怎么提高存储空间利用率? - 24小时必答区 https://bbs.csdn.net/topics/600865890 #include "reg52.h" sbit kP2^0; void main() {unsigned char a0,xd0;while(1){if(k0&&xd0){a;while(k0);}if(a1)P0~1;else if(a2)P0~3;else if(a3)…

React16源码: React中详解在渲染阶段Suspend的源码实现

Suspend 挂起详解 1 &#xff09;概述 在react的更新过程当中&#xff0c;它的任务是可以被挂起的&#xff0c;也就是 Suspend关于 Suspend 字面意思就是挂起在某次更新的任务更新完成之后&#xff0c;暂时不提交 在 react更新中&#xff0c;分为两个阶段&#xff0c;首先是re…

16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web

在Java Web开发领域&#xff0c;JavaServer Pages&#xff08;JSP&#xff09;作为一种动态网页技术&#xff0c;在构建高效Web应用程序中发挥着核心作用。本文将详细介绍JSP的基础概念&#xff0c;包括其基本结构、注释方法、Scriptlet的使用、Page指令元素的功能以及Include包…

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小二乘支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小二乘支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小二乘支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于OOA-LSSVM鱼鹰算法…