Java码界探秘 Java码界探秘
首页
  • 基础

    • 对象的概念
    • 万物皆对象
    • 控制流
    • 初始化和垃圾回收
    • 封装
    • 复用
    • 多态
    • 接口
    • 内部类
    • 集合
  • 高级

    • 函数式编程
    • 流式编程
    • 异常
    • 代码校验
    • 文件
    • 字符串
    • 类型信息
    • 泛型
    • 数组
    • 枚举
    • 注解
    • 并发编程
    • 设计模式
  • 扩展

    • 编程指南
    • 文档注释
    • 对象传递和返回
    • 流式 IO
    • New IO
    • 理解 equals 和 hashCode 方法
    • 关于集合
    • 并发底层原理
    • 数据压缩
    • 对象序列号
    • C++ 和 Java 的优良传统
  • 基础

    • Netty源码解析
    • Netty概述
    • Netty中的buffer
    • Channel中的Pipeline
    • Netty与Reactor模式
    • Netty中的Handler
    • Netty中的HashedWheelTimer
    • Netty中的Channel(下)
    • Netty中的异步
  • 高级

    • Recycler对象池分析
    • FastThreadLocal源码解析
    • SocketChannel 读取ByteBuf 的过程
    • Netty 内存池分析
    • Netty如何实现高性能内存管理
    • 线程池EventLoopGroup源码分析
    • Netty实例构建一个socks proxy
    • Netty4.x用户指南
    • Netty4和Netty3对比
    • Netty3.2用户指南
    • 3.2 ChannelEvent (opens new window)
    • Netty3.x源码解析
    • 4.x DefaultPromise (opens new window)
  • 基础教程

    • Hello, World!
    • 变量Variables
    • 将参数传递给脚本
    • 数组
    • 数组比较
    • 基础运算符
    • 基础字符串操作
    • 逻辑表达式
    • 循环
    • Shell函数
  • 高级教程

    • 特殊变量
    • 字符串操作
    • 捕捉信号命令
    • 文件测试
    • 管道
    • 输入输出
    • Sed命令介绍
    • Sftp命令介绍
  • 知行:技术人的管理之路(脑图)
  • 软件开发中团队首领的好坏之分
  • 制定规划的策略
  • 打造最佳开发团队的几点建议
  • 给老板汇报技术规划的一些要点
  • 技术的价值怎么在非技术领导心里提现出来?
  • 性格内向,不善言辞的人能做管理吗?
  • 研发管理:与员工一对一交流的执行与反思
首页
  • 基础

    • 对象的概念
    • 万物皆对象
    • 控制流
    • 初始化和垃圾回收
    • 封装
    • 复用
    • 多态
    • 接口
    • 内部类
    • 集合
  • 高级

    • 函数式编程
    • 流式编程
    • 异常
    • 代码校验
    • 文件
    • 字符串
    • 类型信息
    • 泛型
    • 数组
    • 枚举
    • 注解
    • 并发编程
    • 设计模式
  • 扩展

    • 编程指南
    • 文档注释
    • 对象传递和返回
    • 流式 IO
    • New IO
    • 理解 equals 和 hashCode 方法
    • 关于集合
    • 并发底层原理
    • 数据压缩
    • 对象序列号
    • C++ 和 Java 的优良传统
  • 基础

    • Netty源码解析
    • Netty概述
    • Netty中的buffer
    • Channel中的Pipeline
    • Netty与Reactor模式
    • Netty中的Handler
    • Netty中的HashedWheelTimer
    • Netty中的Channel(下)
    • Netty中的异步
  • 高级

    • Recycler对象池分析
    • FastThreadLocal源码解析
    • SocketChannel 读取ByteBuf 的过程
    • Netty 内存池分析
    • Netty如何实现高性能内存管理
    • 线程池EventLoopGroup源码分析
    • Netty实例构建一个socks proxy
    • Netty4.x用户指南
    • Netty4和Netty3对比
    • Netty3.2用户指南
    • 3.2 ChannelEvent (opens new window)
    • Netty3.x源码解析
    • 4.x DefaultPromise (opens new window)
  • 基础教程

    • Hello, World!
    • 变量Variables
    • 将参数传递给脚本
    • 数组
    • 数组比较
    • 基础运算符
    • 基础字符串操作
    • 逻辑表达式
    • 循环
    • Shell函数
  • 高级教程

    • 特殊变量
    • 字符串操作
    • 捕捉信号命令
    • 文件测试
    • 管道
    • 输入输出
    • Sed命令介绍
    • Sftp命令介绍
  • 知行:技术人的管理之路(脑图)
  • 软件开发中团队首领的好坏之分
  • 制定规划的策略
  • 打造最佳开发团队的几点建议
  • 给老板汇报技术规划的一些要点
  • 技术的价值怎么在非技术领导心里提现出来?
  • 性格内向,不善言辞的人能做管理吗?
  • 研发管理:与员工一对一交流的执行与反思
  • 基础教程

    • Hello World
    • 变量Variables
    • 将参数传递给脚本
    • 数组
    • 数组比较
    • 基础运算符
    • 基础字符串操作
    • 逻辑表达式
      • Tutorial
        • 数值比较的类型
        • 字符串比较的类型
        • 逻辑组合
        • 案例结构
        • 简单案例bash结构
      • Exercise
      • Tutorial Code
      • Expected Output
      • Solution
    • 循环
    • Shell函数
  • 高级教程

    • 特殊变量
    • 字符串操作
    • 捕捉信号命令
    • 文件测试
    • 管道
    • 输入输出
    • Sed命令介绍
    • Sftp命令介绍
  • Shell教程
  • 基础教程
daichangya
2024-05-10
目录

逻辑表达式

# Tutorial

与流行的编程语言一样,shell也支持逻辑决策。

基本的条件决策构造为:

if [ expression ]; then

如果'expression'为true的代码

fi

NAME="John"
if [ "$NAME" = "John" ]; then
  echo "True - my name is indeed John"
fi

可以用“ else”扩展

NAME="Bill"
if [ "$NAME" = "John" ]; then
  echo "True - my name is indeed John"
else
  echo "False"
  echo "You must mistaken me for $NAME"
fi

可以使用'elif'(else-if)进行扩展

NAME="George"
if [ "$NAME" = "John" ]; then
  echo "John Lennon"
elif [ "$NAME" = "George" ]; then
  echo "George Harrison"
else
  echo "This leaves us with Paul and Ringo"
fi

条件构造使用的表达式被评估为true或false。 表达式可以是单个字符串或变量。空字符串或由空格或未定义的变量名组成的字符串将被评估为false。 该表达式可以是比较的逻辑组合:负号由!表示,逻辑与(连接)由&&表示,逻辑或(分离)由||表示。条件表达式应用双括号[[]括起来]。

# 数值比较的类型

comparison    Evaluated to true when
$a -lt $b    $a < $b
$a -gt $b    $a > $b
$a -le $b    $a <= $b
$a -ge $b    $a >= $b
$a -eq $b    $a is equal to $b
$a -ne $b    $a is not equal to $b

# 字符串比较的类型

comparison    Evaluated to true when
"$a" = "$b"     $a is the same as $b
"$a" == "$b"    $a is the same as $b
"$a" != "$b"    $a is different from $b
-z "$a"         $a is empty

-note1:=周围必须有空格

-note2:在字符串变量周围使用“”,以避免将特殊字符的shell扩展为*

# 逻辑组合

if [[ $VAR_A -eq 1 && ($VAR_B = "bee" || $VAR_T = "tee") ]] ; then
    command...
fi

# 案例结构

case "$variable" in
    "$condition1" )
        command...
    ;;
    "$condition2" )
        command...
    ;;
esac

# 简单案例bash结构

请注意,在这种情况下,$ case是可变的,不必命名为case-这仅是示例

mycase=1
case $mycase in
    1) echo "You selected bash";;
    2) echo "You selected perl";;
    3) echo "You selected phyton";;
    4) echo "You selected c++";;
    5) exit
esac

# Exercise

在第一部分中更改变量,以便每个if语句都解析为True。

# Tutorial Code

#!/bin/bash
# change these variables
NUMBER=10
APPLES=12
KING=GEORGE
# modify above variables
# to make all decisions below TRUE
if [ $NUMBER -gt 15 ] ; then
  echo 1
fi
if [ $NUMBER -eq $APPLES ] ; then
  echo 2
fi
if [[ ($APPLES -eq 12) || ("$KING" = "LUIS") ]] ; then
  echo 3
fi
if [[ $(($NUMBER + $APPLES)) -le 32 ]] ; then
  echo 4
fi

# Expected Output

1
2
3
4

# Solution

#!/bin/bash
# change these variables
NUMBER=16
APPLES=16
KING="LUIS"
# modify above variables
# to make all decisions below TRUE
if [ $NUMBER -gt 15 ] ; then
  echo 1
fi
if [ $NUMBER -eq $APPLES ] ; then
  echo 2
fi
if [[ ($APPLES -eq 12) || ("$KING" = "LUIS") ]] ; then
  echo 3
fi
if [[ $(($NUMBER + $APPLES)) -le 32 ]] ; then
  echo 4
fi
上次更新: 2024/05/11, 17:55:08
基础字符串操作
循环

← 基础字符串操作 循环→

Theme by Vdoing | Copyright © 2019-2024 daichangya | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式