首页 > 系统相关 >shell 编程条件语句

shell 编程条件语句

时间:2023-11-21 20:12:59浏览次数:40  
标签:语句 shell 编程 fstab etc 判断 条件 test 分支

shell

test   测试

0为真

test -a /etc/fstab

echo $?

test -e /etc/fstab

echo $?

 

-a,-e #测试文件是否存在

-a有bug #取反会有变化

test +选项 对象参数

test -f #只看文件
-r #是否有读的权限
-w #是否有写的权限
-x #是否有执行的权限
-d #目录
-f #文件

[ -e /etc/fstab ];echo $?

[ -e /etc/fstab ] =test -e /etc/fstab

 

linux 中判断命令

test

[]

[[]] 加强版的单个[] #可以支持正则表达 和通配符

 

 

数值比较运算符

-eq #等于
-gt #大于
-ge #大于等于
-ne #不等于
-lt #小于
-le #小于或等于

 

字符串比较

 

[[ == ]] #判断两字符是否相等用双等号


=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n: 字符是否存在

 

 

逻辑测试

短路与 #全真才为真

cmd1 && cmd2 #看成一个整体

1为真2为真 ---> 真

一假即为假

短路或 #一真即为真

全假才为假

cmd1 || cmd2

 

 

 

 

 

 

设置ping的脚本

#ping三个包,等待2秒   将多余垃圾丢到null  ,如成功就online ,失败就offline

 

 

 

实验  如果你是超级管理员   /data/test  文件 不存在    就创建这个文件

 -o  或 -a 且

 

( ) { } 拓展

 #() 相当于 cd /opt  ls   cd -        { }相当于 cd /opt  ls

 

if语句的结构

if 判断条件

单分支

if [ 5 gt 4]
then
touch /etc/test
echo true
fi

if #判断条件

theh #条件为真的分支代码

 

双分支

if [`id-u` -eq 0]
then
echo "你是超级管理员"
else
echo "你不是超级管理员"
fi


if #判断条件;
then #条件为真的分支代码

else #条件为假的分支代码

 

多分支

if 判断条件1
then #命令序列
#条件1为真的分支代码

elif 判断条件2
then# 命令序列
#条件2为真的分支代码

elif 判断条件3;
then #命令序列
#条件3为真的分支代码
.......................
else
#命令序列
fi

 

 

 

 

 

 

 

 

 

 

实验 分数实验

 

 

 

 

实验 布 剪子 锤

 

 

 

 

时间

 

 

 #创建个时间文件

 

实验 创建用户 生成随机密码

 

 

 

 

 

case 条件判断

 

case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac

read -p i

case $i in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默认分支
;;

case支持glob风格的通配符:
* #任意长度任意字符
? #任意单个字符
[0-9] 指定范围内的任意单个字符
|   或者,如: a|b

 

 

 

 

分数实验

 

 

 

 

 

 输入数字表示数字,输入字母表示字母,输入特殊字符表示特殊字符

 

 

 

 简易工具箱实验

 

 #bash 0循环。不退出

 

 

 

输入yes,Yes, y 或者n no  No  都可以输出yes or no

 

 

 

 

脚本运行编译安装+systemd

 

 

 

 

 

 

 

 

标签:语句,shell,编程,fstab,etc,判断,条件,test,分支
From: https://www.cnblogs.com/yanrui07/p/17847455.html

相关文章

  • 无涯教程-Sed - 循环语句
    与其他编程语言一样,SED也提供了循环和分支函数来控制执行流程。在本章中,无涯教程将探索更多有关如何在SED中使用循环和分支的信息。SED中的循环的工作方式类似于goto语句。SED可以跳到标签所标签的行,然后继续执行其余命令。在SED中,可以如下定义label :label:start:end......
  • 工程中的“面向对象”编程
    工程中的“面向对象”编程在工程处理中,工程师很容易写出碎片的脚本代码,例如处理服务器上的脚本:假设了一些存在的环境变量、目录结构、配置和数据脚本基于这些假设开始做一堆中间处理,并最终得到一些输出数据。即使有了docker,有了k8s,无论是在docker外,还是docker内,还是会有很多......
  • jmeter beanshell常见问题:"BeanShellInterpreter: Error invoking bsh method: eval
    jmeter使用beanshell文件经常会遇到这个问题:BeanShellInterpreter:Errorinvokingbshmethod:evalInfile:inlineevaluationof.... 原因可能有:1.jar包没有放入对应位置解决:放到lib/ext目录下,并且重启jmeter2.beanshell不支持java泛型,如List<String>list=newAr......
  • 计算机科学与技术之网络编程 Windows下VC6.0 网络SOCKET编程C语言实现(服务端)
    在VC6.0平台用C语言实现网络SOCKET通信一.在VC6.0平台创建Win32ConsoleApplication工程工程名称自拟(或输入firstSocket)添加新建项文件C++SourceFile 文件名自拟,后缀.c(如firstSocket.c)在firstSocket.c加入头文件#include<winsock2.h>链接动态库#pragmacomment(l......
  • 编程之旅,扬帆起航
    嗨,亲爱的读者!我是顾平安,感谢您点开我的这篇博客。作为一个对技术充满热情的新手,我会在博客园分享我的学习之旅,希望能与你们一起成长。自我介绍我是某机构的前Python讲师,从大学起对计算机科学和编程充满了浓厚的兴趣。我的编程旅程始于2020年,当时我被爬虫技术深深吸引。从那......
  • Linux的shell脚本中的比较运算符
    shell中的比较运算符-eq    //等于-ne    //不等于-gt    //大于(greater)-lt     //小于 (less)-ge    //大于等于-le    //小于等于在今天的Linux——shell命令实验中,执行.sh脚本:if((a<60));thenecho"Youdidn'tpassthe......
  • C语言:用for循环语句编写金字塔
       今天我将继续为大家分享C语言的知识,今天要分享的内容依旧是C语言中的for循环语句中的经典例题。好了,废话少说,让我们进入今天的学习内容吧!#include<stdio.h>intmain(){inti,j,c;for(i=1;i<=10;i++)//十行的金字塔{for(j=1;j<=15-i;j++)//*前面有15-i个......
  • 零代码编程:用ChatGPT根据视频标题来批量重命名字幕文件
    现在有很多视频文件:还有视频相对应的字幕文件:F:\儿童学习教育\Abadas.适合2岁以上.BBC儿童学习单词的动画\abadas字幕两者的文件标题不一样,现在要将字幕文件的标题全部根据视频文件来重命名。在chatGPT中输入提示词:你是一个Python编程专家,要完成一个根据视频标题来批量重命名字幕文......
  • shell 展开之进程替换# 深度解析 管道符|和输入输出<< >>重定向的区别
    参考链接https://blog.csdn.net/zwlove5280/article/details/113609342shell展开中的进程替换可以说是非常难懂的一部分,它的语法为有两种>(list)##接受输入看作一个整体,相当于文件描述或<(list)#接受输出在<<TheLinuxCommandLine>>一书中提到了这样一个事,代码......
  • Spring_202311_21_2 2. AOP面向切面编程
    Spring_202311_21_22. AOP面向切面编程AOP:全称是AspectOrientedProgramming即:面向切面编程。简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。即当需要扩展功能时,传统方式采用纵向继承方式......