shell 条件表达式

1、条件测试的常用语法如下

1、test 测试表达式

2、[ 测试表达式 ] #两边需要有空格

3、[[ 测试表达式 ]]

4、(( 测试表达式 ))

说明:

第一种和第二种是等价的,第三种是扩展的test命令,语法4常用于计算

在[[]] 双中括号中可以使用通配符等进行模式匹配,&& ||  >  < 等操作符可以直接应用于双中括号中,但不能用于单中括号中

2、test简单实例如下,可以查看man test 获得详细的帮助

[[email protected] ~]# test -f /etc/passwd && echo 1 || echo 0
1
[[email protected] ~]# test -f /etc/passwd11 && echo 1 || echo 0
0

3、[] 但中括号实例

[[email protected] ~]# [ -f /etc/passwd ]&& echo 1 || echo 0
1
[[email protected] ~]# [ -f /etc/passwd11 ]&& echo 1 || echo 0
0

4、[[]]双中括号实例

[[email protected] ~]# [[ 3 > 2 ]]&& echo 1 || echo 0
1
[[email protected] ~]# [[ 3 > 4 ]]&& echo 1 || echo 0
0

5、文件测试表达式

[[email protected] ~]# [ -d /etc/ ]&& echo 1 || echo 0
1
[[email protected] ~]#
[[email protected] ~]# [ -d /etc/11 ]&& echo 1 || echo 0
0

6、字符串测试表达式

[[email protected] ~]# [ -n "abc" ]&& echo 1 || echo 0
1

[[email protected] ~]# [ -z " " ]&& echo 1 || echo 0
0
[[email protected] ~]# [ "ab" = "ab" ]&& echo 1 || echo 0
1
[[email protected] ~]# [ "ab" != "ab" ]&& echo 1 || echo 0
0

观察系统脚本的写法

7、整数比较

[[email protected] ~]# [ 2 -lt 3 ]&&echo 1||echo 0
1
[[email protected] ~]# [ 2 -gt 3 ]&&echo 1||echo 0
0

比较两个整数的大小
[[email protected] ~]# cat 1.sh
#!/bin/bash
#no.1
a=$1
b=$2
[ $# -ne 2 ]&&{
  echo "USAGE:"$0 "num1 num2"
  exit 1
}
#no.2
expr $a + 10  &>/dev/dull
RETVAL1=$?
expr $b + 10 &>/dev/dull
RETVAL2=$?
[ $RETVAL1 -eq 0 -a $RETVAL2 -eq 0 ]||{
  echo "pls input two int nums: "  exit 2
}

#no.3
[ $a -gt $b ] && echo "$a>$b"||{
[ $a -eq $b ] && echo "$a=$b"||echo "$a<$b"

}
[[email protected] ~]# sh 1.sh 1 2
1<2
[[email protected] ~]# sh 1.sh 3 2
3>2
[[email protected] ~]# sh 1.sh 2 2
2=2

改用read方式

[[email protected] ~]# 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"


[[email protected] ~]# sh 1.sh
Pls input two num: 1 1
1=1
[[email protected] ~]# sh 1.sh
Pls input two num: 1 2
1<2
[[email protected] ~]# sh 1.sh
Pls input two num: 2 1
2>1

原文地址:https://www.cnblogs.com/hellojackyleon/p/9016259.html

时间: 2024-10-08 13:56:59

shell 条件表达式的相关文章

shell条件表达式

shell编程中经常需要判断文件状态.字符串是否相等以及两个数值大小等情况,基于这些比较结果再做执行相关操作.本文主要讲述文件状态.字符串.数值大小的判断方法. 文件状态判断 文件状态的判断通常使用test命令完成,test命令有2种基本格式:test condition / [ condition ].后者使用时,需注意在条件两边加上空格,此种格式最为常用. 判断文件状态的表达式有很多,常用表达式如下: -e 判断文件或目录存是否存在 -f 判断是否为文件 -d 判断是否为目录 -r 判断文件

Shell编程 之 条件表达式

1 #!/bin/bash -   2 #===============================================================================  3 #  4 #          FILE: condition_expression_test.sh  5 #   6 #         USAGE: ./condition_expression_test.sh   7 #   8 #   DESCRIPTION:   9 #  10 #

【第四章】Shell 条件测试表达式

shell中条件测试的三种格式: 格式1: test 条件表达式格式2: [ 条件表达式 ]格式3: [[ 条件表达式 ]] 使用test: [[email protected]-131 ~]# test -f file && echo true || echo false false [[email protected]-131 ~]# touch file [[email protected]-131 ~]# test -f file && echo true || e

shell 的条件表达式及逻辑操作符简单介绍

查看系统的shell: cat /etc/shells 文件测试表达式: -f 文件  文件存在且为普通文件则真,即测试表达式成立. -d 文件  文件存在且为目录文件则真,即测试表达式成立. -s 文件  文件存在且文件大小不为0则真,即测试表达式成立. -e 文件  文件存在则真,即测试表达式成立.只要有文件就行,要区别 -f . -r 文件  文件存在且可读则真,即测试表达式成立. -w 文件 文件存在且可写则真,即测试表达式成立. -x 文件  文件存在且可执行则真,即测试表达式成立.

shell中的条件表达式

条件表达式返回的结果都为布尔型 真为1,假为0 条件测试的表达式 [expression] [[expression]] test expression 常用的: 单目: -e  File  测试文件是否存在 -f  File  测试文件是否是普通文件 -d  File 测试指定路径是否是目录 -r  File 测试文件是否有写的权限 -w  File 测试文件是否有写的权限 -x  File测试文件是否有执行的权限 -z:判断指定的变量是否存在值 -n:测试字符是否为空 空为真 !:逻辑非 双

Shell 条件判断

传统if 从句子——以条件表达式作为 if条件 if [ 条件表达式 ] then command command command else command command fi       条件表达式 文件表达式 if [ -f  file ]    如果文件存在 if [ -d ...   ]    如果目录存在 if [ -s file  ]    如果文件存在且非空 if [ -r file  ]    如果文件存在且可读 if [ -w file  ]    如果文件存在且可写 if

Shell条件测试语句及三种if语句

7 - Shell_条件操作测试及if语句 要使Shell脚本程序具备一定的"智能",面临的第一个问题就是如何区分不同的情况以确定执行何种操作.例如,当磁盘使用率超过95%发送警告:当备份目录不存在时能够自动创建:当源码编译程序的配置失败则不再继续安装等. Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0,表示成功,值为其他时,表示失败. 使用专门的测试工具-test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值0为成立) 使用te

Makefile 中条件表达式 以及函数

Makefile中条件表达式的语法为: <conditional-directive> <text-if-true> endif 或者 <conditional-directive> <text-if-true> else <text-if-false> endif <conditional-directive> 表示条件关键字: 关键字    说明 ifeq ifeq (arg1,arg2)       比较参数arg1和arg2的

Linux Shell之表达式

严格来说,shell中没有表达式的概念.Shell本身其实只是一堆命令的集合,当然也不是胡乱的堆在一起,而是有一定的组织.只是这个组织不那么严谨,所以本文不是要真的总结所谓的表达式,而是把shell中一些犄角旮旯的东西拼凑在一起,实在不知道它们属于那个分类.. 命令代换 其实就是这篇文章中的反引号所起的作用.但是命令代换还有另一种形式,如下: m@meng:~/scripts$ m=`date` m@meng:~/scripts$ echo $m 2015年 06月 25日 星期四 10:40: