shell 条件表达式
1、条件测试的常用语法如下
1、test 测试表达式
2、[ 测试表达式 ] #两边需要有空格
3、[[ 测试表达式 ]]
4、(( 测试表达式 ))
说明:
第一种和第二种是等价的,第三种是扩展的test命令,语法4常用于计算
在[[]] 双中括号中可以使用通配符等进行模式匹配,&& || > < 等操作符可以直接应用于双中括号中,但不能用于单中括号中
2、test简单实例如下,可以查看man test 获得详细的帮助
[root@backup ~]# test -f /etc/passwd && echo 1 || echo 0
1
[root@backup ~]# test -f /etc/passwd11 && echo 1 || echo 0
0
3、[] 但中括号实例
[root@backup ~]# [ -f /etc/passwd ]&& echo 1 || echo 0
1
[root@backup ~]# [ -f /etc/passwd11 ]&& echo 1 || echo 0
0
4、[[]]双中括号实例
[root@backup ~]# [[ 3 > 2 ]]&& echo 1 || echo 0
1
[root@backup ~]# [[ 3 > 4 ]]&& echo 1 || echo 0
0
5、文件测试表达式
[root@backup ~]# [ -d /etc/ ]&& echo 1 || echo 0
1
[root@backup ~]#
[root@backup ~]# [ -d /etc/11 ]&& echo 1 || echo 0
0
6、字符串测试表达式
[root@backup ~]# [ -n "abc" ]&& echo 1 || echo 0
1
[root@backup ~]# [ -z " " ]&& echo 1 || echo 0
0
[root@backup ~]# [ "ab" = "ab" ]&& echo 1 || echo 0
1
[root@backup ~]# [ "ab" != "ab" ]&& echo 1 || echo 0
0
观察系统脚本的写法
7、整数比较
[root@backup ~]# [ 2 -lt 3 ]&&echo 1||echo 0
1
[root@backup ~]# [ 2 -gt 3 ]&&echo 1||echo 0
0
比较两个整数的大小
[root@backup ~]# cat .sh
#!/bin/bash
#no.
a=$
b=$
[ $# -ne ]&&{
echo "USAGE:"$ "num1 num2"
exit
}
#no.
expr $a + 10 &>/dev/dull
RETVAL1=$?
expr $b + 10 &>/dev/dull
RETVAL2=$?
[ $RETVAL1 -eq -a $RETVAL2 -eq ]||{
echo "pls input two int nums: " exit 2
} #no.
[ $a -gt $b ] && echo "$a>$b"||{
[ $a -eq $b ] && echo "$a=$b"||echo "$a<$b" }
[root@backup ~]# sh .sh
<
[root@backup ~]# sh .sh
>
[root@backup ~]# sh .sh
=2 改用read方式
[root@backup ~]# cat 1.sh
#!/bin/bash
#no.1
read -p "Pls input two num: " a b
[ -z "$a" ]||[ -z "$b" ]&&{
echo "pls input two num again"
exit 1
}
#no.2
expr $a + 10 &>/dev/dull
RETVAL1=$?
expr $b + 10 &>/dev/dull
RETVAL2=$?
test $RETVAL1 -eq 0 -a $RETVAL2 -eq 0 ||{
echo "pls input two int nums: "
exit 2
}
#no.3
[ $a -gt $b ] && echo "$a>$b"
[ $a -lt $b ] && echo "$a<$b"
[ $a -eq $b ] && echo "$a=$b"
[root@backup ~]# sh 1.sh
Pls input two num: 1 1
1=1
[root@backup ~]# sh 1.sh
Pls input two num: 1 2
1<2
[root@backup ~]# sh 1.sh
Pls input two num: 2 1
2>1
shell 条件表达式的更多相关文章
- Shell条件表达式
Shell编程中经常需要判断文件状态.字符串是否相等以及两个数值大小等情况,基于这些比较结果再做执行相关操作.本文主要讲述文件状态.字符串.数值大小的判断比较方法. 文件状态判断 文件状态的判断通常使 ...
- Shell 条件表达式汇总
条件表达式 文件表达式 if [ -f file ] 如果文件存在if [ -d ... ] 如果目录存在if [ -s file ] 如果文件存在且非空 if [ -r f ...
- shell(shell变量、条件表达式、流程控制)
本章内容: 变量 运算 if语句 for语句 while语句 break.continue 实例 shell变量 1.shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数 ...
- shell之条件表达式
conditional expressions are used by the [[ compound command and the test and [ builtin commands. ari ...
- shell中的条件表达式
条件表达式返回的结果都为布尔型 真为1,假为0 条件测试的表达式 [expression] [[expression]] test expression 这三种条件表达式的效果是一样的 比较符 整数比 ...
- shell 的条件表达式及逻辑操作符简单介绍
查看系统的shell: cat /etc/shells 文件测试表达式: -f 文件 文件存在且为普通文件则真,即测试表达式成立. -d 文件 文件存在且为目录文件则真,即测试表达式成立. -s ...
- 【第四章】Shell 条件测试表达式
shell中条件测试的三种格式: 格式1: test 条件表达式格式2: [ 条件表达式 ]格式3: [[ 条件表达式 ]] 使用test: [root@host- ~]# test -f file ...
- 『忘了再学』Shell基础 — 28、AWK中条件表达式说明
目录 1.AWK的条件表达 2.条件表达式说明 (1)BEGIN (2)END (3)关系运算符 (4)说明AWK中条件表达式的执行过程 (5)AWK中使用正则表达式 (6)A~B练习 1.AWK的条 ...
- Linux Shell之表达式
严格来说,shell中没有表达式的概念.Shell本身事实上仅仅是一堆命令的集合.当然也不是胡乱的堆在一起.而是有一定的组织.仅仅是这个组织不那么严谨.所以本文不是要真的总结所谓的表达式,而是把she ...
随机推荐
- Repeater控件里面取不到CheckBox的值
然后在后台需要取到,选中了那些 然后在后台怎么取也取不到,当时就纳闷了,然后开始怀疑自己的代码是不是错了,经过仔细一看,我的妈呀,加载事件了差一句话......整个人都不好了 加载事件差这句话不行,补 ...
- Java 对数组的筛选
在Java里面 一般对一个数组进行筛选,去剔除一些元素,一般做法是用临时数组来存储,把符合条件的元素加入到新数组中,虽然数组有移除的方法但是 是线程不安全的: 而用迭代器Iterator,可以在遍历的 ...
- visio画图ER图表和字段注释
最近年底属于验收的项目很多,大多数写文档中,数据库的设计ER图是比不可少的.下面记一下几个常用的用法.以下用的市visio版本为2007,由于菜单样式新版本可能有所不同,请对照相应功能进行操作! 1. ...
- [转载]win10(64bit)上安装MySQL-python
https://blog.csdn.net/builder_taoge/article/details/78292302 https://blog.csdn.net/qq_26808915/artic ...
- 20181229(守护进程,互斥锁,IPC,生产者和消费者模型)
一.守护进程 守护进程:一个进程B守护另一个进程A,当被守护的进程A结束,进程B也就结束了.(不一定同生,但会同死) 两个特点: ①守护进程会在主进程代码执行结束后就终止 ②守护进程内无法再开启子进程 ...
- GTF/GFF
- Tame Me【驯服我】
Tame Me “Good morning,” said the fox. 早上好,狐狸说 “Good morming,” the little prince responded politely,a ...
- Codeforces Round #464 (Div. 2) C. Convenient For Everybody
C. Convenient For Everybody time limit per test2 seconds memory limit per test256 megabytes Problem ...
- centos6.4编译hadoop2.4源码
4.1.环境: 1)Linux 64 位操作系统,CentOS 6.4 版本,VMWare 搭建的虚拟机 2)虚拟机可以联网 4.2.官方编译说明: 解压命令:tar -zxvf hadoop-2.4 ...
- python数据排序
1.原地排序 data.sort() #对原列表进行排序 2.复制排序 data2 = sorted(data) #原列表不变,作为参数传给sorted()方法进行排序