shell脚本条件语句(极其粗糙版)

news2024/9/29 19:23:06

条件测试操作和条件测试语句:

$?:条件判断,失败或者成功,真或者假,true false

shell脚本中:0为真,true 执行成功;其他所有的非0 都是假, false,执行失败

条件测试的命令:

格式一:

test 操作符 文件名

操作符:

-e exist 测试目录或者测试文件是否存在

-d 只能测试是否为目录

-f 只能测试是否为文件

-r 测试当前用户是否有读权限

-w 测试当前用户是否有写权限

-x 测试当前用户是否有执行权限

实验:

test -e passwd.txt

echo $?

test -e passwd.tx

echo $?

text -d passwd.txt

echo $?

test -d kgc

echo $?

test -r kgc/

echo $?

test -w kgc/

echo $?

test -x kgc/

echo $?

test 也可以进行数值和字符串比较

字符串比较,只能比较的是内容是否一致

常用的比较符:

第一种写法:

注意:一下比较符只能用于比较整数:

-eq 等于

-ne 不等于

-gt 大于

-lt 小于

-le 小于等于

-ge 大于等于

第二种写法:

== != > < >= <=

第二种格式:

【条件表达式】

例如【 3 -gt 2 】

第三种方式:强烈推荐的方式

[[条件表达式]] 双中括号的写法比单中括号的功能更加强大,可以避免歧义的出现,而且双中括号可以支持正则表达式

逻辑测试的表达语句:

-a 或 && 逻辑且 表示前后的条件都要成立

-o 或 || 逻辑或,表示前后成立一个即可

! 逻辑否,表示取反

在单括号中 字母与字符都可以使用

但是在双括号中只能用字符,但是字母无法使用,会报错

例如 [ $a -lt 3 -a $a -eq 5] 或者

if语句:

单分支结构:

if 条件语句

then 命令序列

fi

例如:

if [ 3 -gt 2 ]

then echo "ok"

fi

双分支结构:

if 条件语句

then 命令序列

else 命令序列

fi

实验:

有三个IP地址,已位置变量的方式传参

ping通的打印可以通,保存到 /opt/hosts.txt

不通的要打印ping不通

image-20231023152427569

多分支结构:

if 条件语句

条件判断的CASE语句

case 变量值 in

模式1 )

命令序列15

;;

模式2)

命令序列2

;;

*)

;;

命令序列

esac

she11脚本日测: 1、写出shell脚本的执行方式(不少于三种)

bash sh ./(赋权执行) source

2、从指定的文件读取数据,并给指定zhangsan设置密码

vim passwd.txt passwd --stdin dn < passwd.txt

3、变量有几种类型,自定义变量的规范

变量的类型:int:整数 string:字符串 truefalse:布尔类型 浮点:1.23

自定义的变量名:不要使用系统命令作为变量名

不要使用中文

不能使用特殊符合开头 ,只有_可以做开头

不要使用数字开头

4、"" ' ' `` 三个符号的特点

"" ' ' 赋值变量时没有区别

打印变量时 "" 不影响变量的值打印结果。 ' '只会输出变量名的字符串

``执行里面的命令,把命令的执行结果赋值给变量

5、$ * 和$@的区别是什么,$?的特点

$*:加了引号当做整体处理 不加和$@一样,一个个处理

$@:加不加引号,都当成一个一个处理

$?:上一次命令或者脚本执行之后的状态码,所有非0都是异常 只有0才表示执行成功

6、怎么定义全局变量

export

/etc/profile 可以定义全局变量

7、写出计算14+162*5/2+3的shell脚本计算格式,并赋值给变量num。

num=$(awk 'BEGIN {PRINT 14+162*5/2+3}')

或者num=$((14+162*5/2+3))

或者let num=14+162*5/2+3

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

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

相关文章

如何禁止员工上班玩游戏

如何禁止员工上班玩游戏 在这个游戏盛行的年代里&#xff0c;不少游戏玩家会玩到忘我的状态&#xff0c;也有不少员工在上班的时候也要玩上两把&#xff0c;但是公司是雇佣员工的时间是来工作的&#xff0c;出现这种情况很显然是对公司不利的&#xff0c;会严重影响工作效率和…

Python print 函数用法总结

Python3 print 函数用法总结 一、print()函数概述 print() 方法用于打印输出&#xff0c;是python中最常见的一个函数。 print([*objects][,seq ][,end\n][,filesys.stdout]) 参数的具体含义如下&#xff1a; objects --表示输出的对象。输出多个对象时&#xff0c;需要用…

MySQL---表的增查改删(CRUD基础)

文章目录 什么是CRUD&#xff1f;新增&#xff08;Create&#xff09;单行数据 全列插入多行数据 指定列插入 查询&#xff08;Retrieve&#xff09;全列查询指定列查询查询字段为表达式起别名查询去重查询排序查询条件查询分页查询 修改&#xff08;Update&#xff09;删除&…

新手如何备考学习PMP?

一、PMP学习7步走攻略 1、熟悉考试大纲&#xff1a; PMP考试大纲是备考的基础&#xff0c;考生需要详细熟悉考试大纲&#xff0c;了解各个知识领域的重点和难点。 2、制定学习计划&#xff1a; 根据考试大纲和个人情况&#xff0c;制定学习计划&#xff0c;合理分配学习时间…

stm32移植u8g2库内存不足解决办法

1.现象 跟着视频教程移植完u8g2库到stm32f103c8t6后&#xff0c;进行编译&#xff0c;报了100多个空间不足的问题&#xff0c;如下图。 ..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching u8g2_fonts.o(.constdata). ..\Outp…

蓝天远控2023(VIP会员版)

蓝天远控2023&#xff08;VIP会员版&#xff09;下载地址&#xff1a;https://user.qzone.qq.com/512526231/main

【逆向】导入表注入

练手的exe链接 链接&#xff1a;https://pan.baidu.com/s/1_87QNHaZYlfY_5uwIRePUQ?pwd6gds 提取码&#xff1a;6gds 原理&#xff1a; 在动态链接库一章提到DllMain&#xff0c;这里再回顾一次 当dll被加载进4GB空间时&#xff0c;会调用一次DllMain&#xff08;入口方法&…

在家制作电子相册一定需要的一款工具

​随着科技的发展&#xff0c;越来越多的人开始喜欢在家制作电子相册&#xff0c;记录自己的生活点滴。那么&#xff0c;如何在家制作电子相册呢&#xff1f; 一款好的工具是必不可少的。可以使用这款工具&#xff0c;轻松上手----FLBOOK在线制作电子杂志平台 1.打开FLBOOK在线…

手撕Vue-实现事件相关指令

经过上一篇文章的学习&#xff0c;实现了界面驱动数据更新&#xff0c;接下来实现一下其它相关的指令&#xff0c;比如事件相关的指令&#xff0c;v-on 这个指令的使用频率还是很高的&#xff0c;所以我们先来实现这个指令。 v-on 的作用是什么&#xff0c;是不是可以给某一个元…

SpringCloud复习:(3)LoadBalancerInterceptor

使用Ribbon时&#xff0c;execute方法会由RibbonLoadBalancerClient类来实现 它会调用重载的execute方法 getLoadBalancer默认会返回ZoneAwareLoadBalancer&#xff08;基类是BaseLoadBalancer).此处调用的getServer方法就会根据负载均衡策略选择适当的服务器来为下一步的htt…

电脑缺失duilib.dll是什么情况,有什么办法可以解决duilib.dll缺失

在使用电脑时突然提示duilib.dll丢失&#xff0c;这是什么情况&#xff1f;有什么办法可以解决这个问题呢&#xff1f;今天就给大家分享几种解决duilib.dll丢失的办法&#xff0c;解决duilib.dll丢失的办法其实还是非常的简单的&#xff0c;来看看有什么办法可以解决duilib.dll…

使用Spring Boot限制在一分钟内某个IP只能访问10次

有些时候&#xff0c;为了防止我们上线的网站被攻击&#xff0c;或者被刷取流量&#xff0c;我们会对某一个ip进行限制处理&#xff0c;这篇文章&#xff0c;我们将通过Spring Boot编写一个小案例&#xff0c;来实现在一分钟内同一个IP只能访问10次&#xff0c;当然具体数值&am…

【Happy!1024】C++智能指针

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; C/C专栏 &#x1f319;请不要相信胜利就像山坡上的蒲公英一样唾…

【计算摄像学】博资考

TOC 本博客将覆盖的内容&#xff1a; 数字相机&#xff08;Digital Camera&#xff09; 小孔成像模型&#xff08;pinhole imaging model&#xff09; 如下图所示&#xff0c;物体反射的光线射向四面八方&#xff0c;直接使用传感器无法直接得到物体形貌。 小孔成像模型在传…

Spring中AOP详解

目录 一、AOP的概念 二、AOP的底层实现原理 2.1 JDK的动态代理 2.1.1 invocationhandler接口 2.1.2 代理对象和原始类实现相同的接口 interfaces 2.1.3 类加载器ClassLoador 2.1.4 编码实现 2.2 Cglib动态代理 2.2.1 Cglib动态代理编码实现 三、AOP如何通过原始对象的id获取到代…

PCL入门1之点云读取及可视化

0 引言 本文主要记录在Ubuntu系统的PCL点云库安装过程&#xff0c;以及PCL点云读取和可视化的c代码示例。 1 PCL安装 本文是安装了pcl1.8大版本&#xff0c;可先下载 下载pcl 1.8.1 版本&#xff08;点击Source code(zip&#xff09; 先安装pcl1.8.1所需的依赖库&#xff1…

【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】

【在英伟达nvidia的jetson-orin-nx和PC电脑ubuntu20.04上-装配ESP32开发调试环境-基础测试】 1、概述2、实验环境3、 物品说明4、参考资料与自我总结5、实验过程1、创建目录2、克隆下载文件3、 拉取子目录安装和交叉编译工具链等其他工具4、添加环境变量6、将样例文件拷贝到桌面…

使用el-tree问题之清空勾数据不生效

一、问题场景描述 在做角色菜单按钮权限时&#xff0c;多数采用树结构勾选数据&#xff0c;这里使用了element中的el-tree。如下图&#xff1a; 1、我给角色1勾选了权限列表数据的前三行&#xff0c; 点击弹框的确定 2、紧接着点击角色2的权限按钮&#xff0c;给角色2分配修…

Lvs +keepalivede : 高可用集群

keepalived为Ivs应运而生的高可用服务。Ivs的调度器无法做高可用&#xff0c;于是keepalived这个软件。 实现的是调度器的高可用。 但是: keepalived不是专为Ivs集群服务的&#xff0c;也可以做其他代理服务器的高可用。 lvs的高可用集群&#xff1a;主调度器和备调度器&#…

[springboot源码分析]-Conditional

https://www.baeldung.com/spring-conditional-annotations Condition元数据 1 org.springframework.context.annotation.Conditional 1.1Conditional定义 Target({ElementType.TYPE, ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface…