SHELL学习笔记----IF条件判断,判断条件

2023-10-27

前言:

      无论什么编程语言都离不开条件判断。SHELL也不例外。

      if list then
          do something here
      elif list then
          do another thing here
      else
         do something else here
      fi
   

EX1:

#!/bin/sh

SYSTEM=`uname -s`    #获取操作系统类型,我本地是linux

if [ $SYSTEM = "Linux" ] ; then     #如果是linux的话打印linux字符串
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then   
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi     #ifend

基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。

1 字符串判断

str1 = str2      当两个串有相同内容、长度时为真
str1 != str2      当串str1和str2不等时为真
-n str1        当串的长度大于0时为真(串非空)
-z str1        当串的长度为0时为真(空串)
str1           当串str1为非空时为真

2 数字的判断

int1 -eq int2    两数相等为真
int1 -ne int2    两数不等为真
int1 -gt int2    int1大于int2为真
int1 -ge int2    int1大于等于int2为真
int1 -lt int2    int1小于int2为真
int1 -le int2    int1小于等于int2为真

3 文件的判断

-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

3 复杂逻辑判断

-a         与
-o        或
!        非

结尾

    语法虽然简单,但是在SHELL里使用的时候,他的功能变得强大了。

 

=====================================================================

 

附 表:

[ -a FILE ]  如果 FILE 存在则为真。 
[ -b FILE ]  如果 FILE 存在且是一个块特殊文件则为真。 
[ -c FILE ]  如果 FILE 存在且是一个字特殊文件则为真。 
[ -d FILE ]  如果 FILE 存在且是一个目录则为真。 
[ -e FILE ]  如果 FILE 存在则为真。 
[ -f FILE ]  如果 FILE 存在且是一个普通文件则为真。 
[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。 [ -h FILE ]  如果 FILE 存在且是一个符号连接则为真。 
[ -k FILE ]  如果 FILE 存在且已经设置了粘制位则为真。 
[ -p FILE ]  如果 FILE 存在且是一个名字管道(F如果O)则为真。 
[ -r FILE ]  如果 FILE 存在且是可读的则为真。 
[ -s FILE ]  如果 FILE 存在且大小不为0则为真。 
[ -t FD ]  如果文件描述符 FD 打开且指向一个终端则为真。 
[ -u FILE ]  如果 FILE 存在且设置了SUID (set user ID)则为真。 
[ -w FILE ]  如果 FILE 如果 FILE 存在且是可写的则为真。 
[ -x FILE ]  如果 FILE 存在且是可执行的则为真。 
[ -O FILE ]  如果 FILE 存在且属有效用户ID则为真。 
[ -G FILE ]  如果 FILE 存在且属有效用户组则为真。 
[ -L FILE ]  如果 FILE 存在且是一个符号连接则为真。 
[ -N FILE ]  如果 FILE 存在 and has been mod如果ied since it was last read则为真。 
[ -S FILE ]  如果 FILE 存在且是一个套接字则为真。 
[ FILE1 -nt FILE2 ]  如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。 
[ FILE1 -ot FILE2 ]  如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。 
[ FILE1 -ef FILE2 ]  如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。 
[ -o OPTIONNAME ]  如果 shell选项 “OPTIONNAME” 开启则为真。 
[ -z STRING ]  “STRING” 的长度为零则为真。 
[ -n STRING ] or [ STRING ]  “STRING” 的长度为非零 non-zero则为真。 
[ STRING1 == STRING2 ]  如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。 
[ STRING1 != STRING2 ]  如果字符串不相等则为真。
[ STRING1 < STRING2 ]  如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。 
[ STRING1 > STRING2 ]  如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。 
[ ARG1 OP ARG2 ] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.

 


参考推荐:
Linux Shell函数返回值

Linux 之 shell 比较运算符(推荐)

Linux Shell学习简单小结(推荐)

SHELL学习笔记----IF条件判断,判断条件



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SHELL学习笔记----IF条件判断,判断条件 的相关文章

  • PHP上传问题

    我使用了一些脚本来开始在我的开发计算机上上传文件 问题是 尽管此操作预期很容易 但每当我尝试上传图像时 Apache 似乎都会超时 上传设置为On和tmp目录设置在php ini 我尝试上传主要内容gif来自谷歌 一个8 36KB图像 它应
  • 如何在Python中的正则表达式中匹配字符串列表中的任何字符串?

    假设我有一个字符串列表 string lst fun dum sun gum 我想创建一个正则表达式 在其中的某个点 我可以匹配该列表中的任何字符串 在一个组内 如下所示 import re template re compile r el
  • 从通知中打开文件

    我从服务器下载一个文件 对于此操作 我显示了进度不确定的通知 下载文件后 我想通过单击通知来打开它 我获得了扩展名并尝试使用以下命令打开它intent像这样 public static Intent openFile Context con
  • 如何快速防止标签中出现孤儿?

    我有一个可以有一两行的标签 如果它有两行 我希望第二行至少有两个 或者可能三个 单词 而不仅仅是一个 关于如何使用 swift 实现这一点有什么想法吗 提前致谢 Daniel 编辑 我删除了我愚蠢的第一个想法 这些想法并没有真正的帮助 好吧
  • 如何通过 shell 脚本确定网页是否存在?

    我正在尝试制作一个程序 可以将一系列漫画扫描转换为一个 pdf 文件 并且我不想尝试下载图片来确定我是否有正确的网址 是否有一个 shell 脚本命令可以用来检查网页是否存在 在 NIX 下 您可以使用curl发出一个简单的HEAD要求 H
  • 检查子字符串是否在字符串列表中?

    我之前已经找到了这个问题的一些答案 但它们对于当前的Python版本来说似乎已经过时了 或者至少它们对我不起作用 我想检查字符串列表中是否包含子字符串 我只需要布尔结果 我找到了这个解决方案 word to check or wordlis
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • 在 C++ 中查找精确的字符串匹配

    这是我用来检测 txt 文件中一行中的字符串的代码 int main std ifstream file C log txt std string line while file eof while std getline file lin
  • R:如何根据规范更改数据框中的列名称

    我有一个数据框 它的开头如下 SM H1455 SM V1456 SM K1457 SM X1461 SM K1462 ENSG00000000419 8 290 270 314 364 240 ENSG00000000457 8 252
  • 如何将 bash 脚本的整个输出保存到文件

    我正在尝试将 bash 脚本的整个输出保存到文件中 我目前在代码开头有一个参数 ip 地址 如下所示 bin bash USAGE Usage 0
  • Bash 脚本大小限制?

    我有一个 bash 脚本 在 RHEL 或 OS X 上运行时出现以下错误 第 62484 行 意外标记 换行符 附近出现语法错误 第 62484 行 o gz 这是一个自动生成的脚本 用于解决我公司使用的 Grid Engine 计算集群
  • 如何在lua中获取shell脚本的返回码?

    我正在lua中执行一个脚本 os execute sh manager scripts update system sh f 我想获得脚本的输出 如果退出状态为 7 则返回 7 I tried local output os execute
  • c# - 如何列出硬盘上的所有文件和文件夹?

    我想列出我的程序有权访问的所有文件和文件夹并将它们写入文本文件 我如何获得该列表 我需要一种方法来捕获或不对不可访问的文件夹抛出 UnauthorizedAccessExceptions 请尝试使用代码 private static IEn
  • 对 os.listdir 文件进行排序 Python

    如果已下载数年的数据 这些数据存储在具有以下命名约定的文件中 year day dat 例如 名为 2014 1 dat 的文件包含 2014 年 1 月 1 日的数据 我需要按天排序读取这些数据文件 2014 1 dat 2014 2 d
  • PHP 的 mb_internal_encoding 实际上是做什么的?

    根据 PHP 网站 http www php net manual en function mb internal encoding php它这样做 coding 是用于 HTTP 输入的字符编码名称 字符编码转换 HTTP输出字符编码 转
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • shell_exec 的输出被截断为 100 个字符

    当在 shell 中运行以下命令时 curl F file filename http 192 168 0 1 产生以下输出 Accuracy 0 0 1 classification Accuracy 0 0 1 classificati
  • 从另一列的子字符串创建列

    我有一个 Pandas 数据框对象 我想从现有列的子字符串创建新列 我的数据如下所示 Date variable want1 want2 want3 0 02 01 08 Australia Sydney A Australia Sydne
  • 十六进制字符串的运行长度编码(包括换行符)

    我正在使用以下方法实现游程长度编码GZipStreamC winforms 应用程序中的类 数据以一系列由换行符分隔的字符串形式提供 如下所示 FFFFFFFF FFFFFEFF FDFFFFFF 00FFFFFF 在压缩之前 我将字符串转
  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com

随机推荐

  • NPM使用技巧

    NPM使用技巧 前言 技巧 全局模块位置 PowerShell报错 安装模块冲突 NPM介绍 NPM命令 使用方法 基本命令 模块命令 查看模块 运行命令 镜像管理 常用模块 rimraf yarn 前言 本文包含NodeJS中NPM包管理
  • ADO.NET的五个主要对象

    文章目录 Connection Command DataAdapter DataSet DataReader ADO NET中的五个主要对象 Connection Command DataAdapter DataSet DataReader
  • vue+express+websocket+mongodb在线群聊工具

    vue express websocket mongodb在线群聊工具 目录 vue express websocket mongodb在线群聊工具 1 项目概述 2 项目运行 3 项目代码细节 3 1 后端 3 1 1 nodejs连接数
  • (五)逻辑架构

    逻辑架构 1 逻辑架构剖析 1 1 服务器处理客户端请求 1 2 Connectors 1 3 第1层 连接层 1 4 第2层 服务层 1 5 第3层 引擎层 1 6 存储层 1 7 小结 2 SQL执行流程 2 1 MySQL 中的 SQ
  • 我们应该如何使用webstorm呢

    WebStorm2020安装教程 软件名称 WebStorm2020 软件语言 简体中文 软件大小 269 28MB 安装环境 Win10 Win8 Win7 64位下载链接 百度网盘地址 提取码 damd WebStorm是一款JavaS
  • Unity核心6——Animation

    一 动画窗口 通过 Window gt Animation gt Animation 打开 Animation 窗口 Animation窗口主要用于在 Unity 内部创建和修改动画 所有在场景中的对象都可以通过 Animation 窗口为
  • Latex的一些操作

    ps 最近投个论文 需要Latex排版 于是简单使用一下 记录一些基本步骤 以防备用 一 下载与安装工具 texlive的下载与安装 参见这个网友写的 https blog csdn net weixin 39892850 article
  • DeepJavaLibrary(DJL)框架的使用:在java上使用AlphaPose完成实时多人姿态估计任务

    首先 这里是完整的项目代码 目录 实现环境 实现原理 DJL框架能帮我们做什么 Alphapose 实现步骤 一 导出alphapose模型 导出yolov5 导出单人姿态估计网络 二 实现Translator 使用YoloTranslat
  • Java类的加载机制

    一 类的生命周期 1 加载的生命周期 类从被加载到虚拟机内存中开始 到卸载出内存为止 它的整个生命周期包括 加载 Loading 验证 Verification 准备 Preparation 解析 Resolution 初始化 Intial
  • URP源码学习(七)一些细节和理解

    RT理解 RT是什么 用在哪 首先rt是一张特殊贴图 这张贴图对应的是GPU上的FrameBuffer 一般用到的是颜色和深度 从这张图取数据用于计算 或是直接对这张图进行修改 以得到想要的效果 FrameBuffer就是gpu里渲染结果的
  • 【论文阅读-NeurIPS-2019】Coda: An End-to-End Neural Program Decompiler

    Coda An End to End Neural Program Decompiler Conference NeurIPS 2019 这篇文章提出了一个新的反编译框架Coda 分为code sketch generation 和 err
  • Appium连接手机时报权限错误 requires:android.permission.WRITE_SECURE_SETTINGS

    报错信息 java lang SecurityException Permission denial writing to settings requires android permission WRITE SECURE SETTINGS
  • ubuntu server 22.04 静态ip设置

    ubuntu server 22 04 静态ip设置 我一般配置ip都是在系统安装完成后才进行设置 查看当前网络 需要了解的是 你该静态ip是该的哪个网卡的别搞错了 ifconfig ip a 这两个命令 都是可以的 修改配置文件 etc
  • C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据 使用的是基于以太网的TCP IP实现 不需要额外的组件 读取操作只要放到后台线程就不会卡死线程 本组件支持超级方便的高性能读写操作 官方地址 http www hslcommu
  • 关于java.servlet.*缺失问题

    上图使用的tomcat版本为10 0 23 此问题目前出现在Tomcat10系列 而 Javax servlet 标红 不存在 的原因是因为包名改了 Tomcat 10 用以下的 import import jakarta servlet
  • ESP12f/E(8266)以及STM32串口自动烧录电路

    在使用CH340C芯片进行自动烧录时 经常会用到RTS和DTR两个联络输出信号 电脑烧录程序控制芯片这两个引脚的高低电平 从而控制主控芯片IO0和reset引脚进行自动烧录并复位 这两个信号都是低电平有效 STM32 这里需要注意的是使用的
  • jpa报错:check the manual that corresponds to your MySQL server version for the right

    原因一 check the manual that corresponds to your MySQL server version for the right 因为表字段中使用了关键字 private String describe 解决
  • 查看tensor的形状,行列大小

    torch size是tuple 元组的子类 因此他支持元组所有的操作 如x size 0 import pandas as pd import numpy as np import torch x torch rand 5 3 print
  • 基于内容的课程推荐系统

    引言 基于Coursera课程数据集 将课程名称向量化 计算与目标课程标题向量最相似的课程向量 实现基于内容的课程推荐 代码实现 准备实验环境与数据 import numpy as np import pandas as pd from s
  • SHELL学习笔记----IF条件判断,判断条件

    前言 无论什么编程语言都离不开条件判断 SHELL也不例外 if list then do something here elif list then do another thing here else do something else