linux脚本多个条件比较大小,如何在shell if语句中表示多个条件?
经典技术(转义元字符):
if [ \( "$g" -eq 1 -a "$c" = "123" \) -o \( "$g" -eq 2 -a "$c" = "456" \) ]
then echo abc
else echo efg
fi
我已经$g用双引号将引用括起来;一般来说,这是一个好习惯。严格来说,并不需要括号,因为的优先级-a,并-o使得它纠正,甚至没有他们。
请注意,-aand -o运算符是testaka 的POSIX规范的一部分[,主要是为了向后兼容(例如,因为它们是test7th Edition UNIX 的一部分),但是POSIX将它们明确标记为“过时”。Bash(请参阅条件表达式)似乎抢先了经典和POSIX的含义,-a并-o带有自己的接受参数的替代运算符。
一定要小心,您可以使用更现代的[[运算符,但是请注意,例如Bash和Korn Shell中的版本不必相同。
for g in 1 2 3
do
for c in 123 456 789
do
if [[ ( "$g" -eq 1 && "$c" = "123" ) || ( "$g" -eq 2 && "$c" = "456" ) ]]
then echo "g = $g; c = $c; true"
else echo "g = $g; c = $c; false"
fi
done
done
在Mac OS X上使用Bash 3.2.57运行示例:
g = 1; c = 123; true
g = 1; c = 456; false
g = 1; c = 789; false
g = 2; c = 123; false
g = 2; c = 456; true
g = 2; c = 789; false
g = 3; c = 123; false
g = 3; c = 456; false
g = 3; c = 789; false
您不需要像使用引号一样引用变量[[,[因为它不是以相同的方式[是单独的命令。
这不是一个经典的问题吗?
我会这么想的。但是,还有另一种选择,即:
if [ "$g" -eq 1 -a "$c" = "123" ] || [ "$g" -eq 2 -a "$c" = "456" ]
then echo abc
else echo efg
fi
的确,如果您阅读了该autoconf工具或相关软件包的“便携式外壳”指南,则建议使用“ ||”和“ &&” 这种符号。我想您甚至可以做到:
if [ "$g" -eq 1 ] && [ "$c" = "123" ]
then echo abc
elif [ "$g" -eq 2 ] && [ "$c" = "456" ]
then echo abc
else echo efg
fi
在动作像回声一样琐碎的情况下,这还不错。当要重复的动作块为多行时,重复会很痛苦,并且较早的版本之一是可取的-否则您需要将动作包装到在不同then块中调用的函数中。
linux脚本多个条件比较大小,如何在shell if语句中表示多个条件?相关推荐
- Linux Shell脚本入门教程系列之(十三)Shell分支语句case … esac教程
本文是Linux Shell脚本系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之 后,分支语句非常实用,基本上高级语言都支持分支语句(pytho ...
- oracle大于条件,oracle中sql语句中的in的条件数量大于1000有问题
oracle中sql语句中的in的条件数量大于1000有问题 oracle中sql语句中select * from t_Test t where t.Id in(1,2,3......)/*数量不能 ...
- 如何在if语句中表示多个条件?
本文翻译自:How to represent multiple conditions in a shell if statement? I want to represent multiple con ...
- 转在同一个sql语句中如何写不同条件的count数量
今天在做Portal中的Dashboard展现的时候,需要对多个统计字段做展现,根据我现在的掌握水平,我只能在sql调用构建器中实现一种sql语 句返回的resultSet做展现.没有办法,只能从数据 ...
- linux shell ifeq,Makefile中的ifeq 多条件使用
Makefile中的ifeq 多条件使用 网上关于makefile中ifeq的介绍已经很多了,为什么我还要在写这篇文章,因为他们只说了if else两种条件的情况,并没有讲多于两种条件情况的使用. 多 ...
- shell判断false_Python中的True, False条件判断
对于有编程经验的程序员们都知道条件语句的写法: 以C++为例: if (condition) { doSomething(); } 对于Python中的条件判断语句的写法则是下面的样子: if (co ...
- linux脚本生成数字写入文本,4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16...
一.Shell 脚本命令的2种工作方式 交互式:输入一条(命令),执行一条 批处理:事先写好一个Shell脚本,一次性执行里面的所有命令 备注:Shell脚本不仅包含命令,还包含操作逻辑(if,for ...
- linux脚本第一行是什么,完全搞懂shell脚本第一行:#!/bin/bash的含义
转自:https://blog.csdn.net/Doris0214/article/details/91453113 shell脚本的第一行一般会写有以下字样: #!/bin/bash 或者 #!/ ...
- lisp语言cond和if套用_在'if'语句中设置多行条件的样式?
Harley Holco.. 679 您不需要在第二个条件行上使用4个空格.也许用: if (cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val ...
最新文章
- python使用PyMySQL的连接MySQL数据库
- 解决ngnix服务器上的Discuz!x2.5 Upload Error:413错误
- mysql带where条件导出数据表以及部分错误解析
- 简易boundbox碰撞检测
- Python中包含义及其定义
- Struts DispatchAction
- idea java主题_IDEA变身超级形态,需要这个酷炫主题
- 快速实现MySQL迁移到Redis
- IRF之LACP-MAD检测
- iOS 几个时间类型
- FireFox2和FireFox3共存解决方案(附完整图解)
- idea2021设置代码字体大小
- 薛定谔Maestro--LigPrep 准备配体
- 只读更新全程图解教程(转)
- spark编程:DataFrame和SQL编程基础-2
- 使用 Telnet 手动接收邮件 (基于 macOS 系统)
- python turtle画猫_Turtle库画小猫咪
- 电力英语和计算机平台,电力计算信息平台,the Computing Information Platform of Electric Power,音标,读音,翻译,英文例句,英语词典...
- 怎样学好计算机英语,怎样学好小学英语
- Ubuntu16.04LTS部署CEPH文件存储集群
热门文章
- mysql 手机号 字段_2021-01-06:mysql中,我存十亿个手机号码,考虑存储空间和查询效率,用什么类型的字段去存?...
- signature=5edb6549fd9da7abd1cea3d5008f5c15,IMPLEMENTING INVERTED MASTER-SLAVE 3D SEMICONDUCTOR STACK
- pycharm 如何跳转光标上次查看的位置 ctrl+alt+(←→)(前进和返回)
- lua脚本简单编辑及常用指令
- 变异蛮牛 树,dfs,二分图染色 牛客白月赛44
- 面向对象---类与对象
- 安装计算机教室的请示,教室使用申请书4篇
- 数组模拟队列(代码实现)
- python语言百分号的含义_python【百分号】
- python packages_Python-Packages