Shell三元表达式
Shell三元表达式
shell能否实现三元表达式呢?像下面这样:
int a = (b == 5) ? c : d;
实现方法:
a=$([ "$b" == 5 ] && echo "$c" || echo "$d")
原理:
&&的优先级比||高,所以如果前面的&&成功,后面的||就不会执行;相反,后面的||就会执行。
C/C++、Java、Python 代码中最常见的就是 if else 结构,而最简单的 if else 结构一般多用 条件运算符(三目运算符)来书写,该运算符由问号(?)和冒号(:)组成,其格式如下:
表达式 ? 表达式 : 表达式 ;
等同于C/C++编程语言中的 if 语句:
if (表达式1)
表达式2;
else
表达式3;
shell 脚本
在 bash shell 中也有类似的方式:
command1 && command2 || command3
如果 command 是一连串的组合,那么可以使用 { } 将commands 括起来。
command1 && { command2_1; command2_2; command2_3;} || { command3_1; command3_3; command3_3;
注意:代码块若用在函数中, { } 最后一个必须是 ;
举例:
# fileName 文件不存在,则退出,就可以按照下面方式执行
[ -e $fileName ] || { echo -e "fileName Not existed!"; exit 1; }
#也或者可以增加一些 log 打印信息
[ -e $fileName ] && echo -e "$fileName existed" || { echo -e "$fileName Not existed!"; exit 1; }
#多个命令集合的组合
[ -e $fileName ] && echo -e "$fileName existed"; ehco -e "Other Necessary Information" || { echo -e "$fileName Not existed!"; exit 1; }
[ -e $fileName ] && { echo -e "$fileName existed"; ehco -e "Other Necessary Information"; } || { echo -e "$fileName Not existed!"; exit 1; }
#读取IP地址,若为空,则使用默认IP,否则使用新的IP地址
read -p "Please input Management IP (Default is $DEFAULT_IP): " MGMT_IP
[[ -z $MGMT_IP ]] && { MGMT_IP=$DEFAULT_IP; echo -e "Using default IP $MGMT_IP\n" ;} || DEFAULT_IP=$MGMT_IP
Shell三元表达式的更多相关文章
- [LeetCode] Ternary Expression Parser 三元表达式解析器
Given a string representing arbitrarily nested ternary expressions, calculate the result of the expr ...
- 利用Python的三元表达式解决Odoo中工资条中城镇、农村保险的问题
Python中没有像C#中有三元表达式 A?B:C 但在python中可以通过 A if condition else B 的方式来达到同样的效果. 例如 : 1 if True else 0 输出 ...
- C#基础——三元表达式
采用三元操作符对?:对表达式进行运算,这种操作符比较特别,因为它有三个操作对象,但它确实属于操作符的一种,它最终也会生成一个值.其表达式采取下述形式: boolean-exp ? value0 : v ...
- 【python】python的二元表达式和三元表达式
二元表达式 x,y=4,3if x>y: s = yelse: s= x print s x if x<y else y 三元表达式: >>> def f(x,y): ...
- Python三元表达式
我们知道Python没有三元表达式,但是我们通过技巧达到三元表达式的效果. 摘自<Dive Into Python>: 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的 ...
- [No0000B7]If else 与 三元表达式? : 效率对比
先看 if else 一段代码 using System; class Program { private static void Main() { ; ) i = -; ; Console.Writ ...
- 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、
Date()对象: Date对象用于处理日期和时间. 1.1 Math对象 ◆Math.ceil() 天花板函数 向上取整 只取整数,不足则进1 ◆Math.floor() 地板函数 ...
- Day4 闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式、序列化与反序列化
一.装饰器 一.装饰器的知识储备 1.可变长参数 :*args和**kwargs def index(name,age): print(name,age) def wrapper(*args,**k ...
- python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数
一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
随机推荐
- 基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
前言 今天大姚给大家分享一款基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用:ZR.Admin.NET. 开源免费(基于MIT License开源协议).代码量少.学习简单. ...
- 手撸二叉树——AVL平衡二叉树
还记得上一篇中我们遗留的问题吗?我们再简要回顾一下,现在有一颗空的二叉查找树,我们分别插入1,2,3,4,5,五个节点,那么得到的树是什么样子呢?这个不难想象,二叉树如下: 树的高度是4,并且数据结构 ...
- python-mongodb简单封装
#!/usr/bin/python # -*- coding: UTF-8 -*- '''@auther :mr.qin @IDE:pycharm''' import pymongo from too ...
- Vulnhub 靶机 THE PLANETS: EARTH
0x01信息收集 1.1.nmap扫描 IP段扫描,确定靶机地址 平扫描 nmap 192.168.1.0/24 扫描结果(部分) Nmap scan report for earth.local ( ...
- c++中输出小数
首先 需要有#include<iomanip>这个头文件,因为它是输出输出流的格式控制 #include<iomanip> // 用于调用setprecision(n) 1 d ...
- 如何获取Flume连接HDFS所需要的包
在学习Hadoop工具中的Flume时,有的小伙伴会遇到这句话: "Flume要想将数据输出到HDFS,必须持有Hadoop相关jar包" 然后小伙伴就懵逼了,这些包要去什么地方来 ...
- 多校A层冲刺NOIP2024模拟赛18
多校A层冲刺NOIP2024模拟赛18 T1 选彩笔(rgb) 签到题,但是没签上... 没想到三维前缀和,直接上了个bitset. 就是直接二分答案,然后枚举这三维每维的区间的起点,前缀和查数量是否 ...
- Reviewbot 开源 | 为什么我们要打造自己的代码审查服务?
Reviewbot 是七牛云开源的一个项目,旨在提供一个自托管的代码审查服务, 方便做 code review/静态检查, 以及自定义工程规范的落地. 静态检查不是个新鲜事. 我记得早在几年前,我们就 ...
- 如何利用1%的数据优化特定领域LLM预训练? | EMNLP'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Target-Aware Language Modeling via Granular Data Sampling 论文地址:https:// ...
- git pull发现有ahead of xx commits问题如何解决
git pull 的时候发现有提示你ahead of xx commits 这个时候怎么办呢? 直接一句话定位到远程最新分支 git reset --hard origin/分支名称