- 浏览: 162860 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
abc08010051:
简单明了,非常不错
java.lang.Thread.State类详解 -
tenderlitch:
jdk api文档里面的描述...
set闲聊 -
xmind:
图不错,收藏之。
图中Thread.wait()改用Objec ...
java.lang.Thread.State类详解 -
lahvey:
因为你的$VALUE值是“sed.txt”,并不是这个文件的内 ...
条件控制(test,expr……) -
tomotoboy:
thanks
tr用法
测试文件状态
test
test一般有两种格式,即:
test condition
或
[ condition ]
使用方括号时,要注意在条件两边加上空格。测试文件状态的条件表达式很多,但是最常用的可在下表中查到。
测试时使用逻辑操作符
测试文件状态是否为OK,但是有时要比较两个文件状态。shell提供三种逻辑操作完成此功能。
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
下面比较两个文件sed.out、sed.txt:
字符串测试
字符串测试是错误捕获很重要的一部分,特别在测试用户输入或比较变量时尤为重要。字符串测试有5种格式:
test "string"
test string_operator "string"
test "string" string_operator "string"
[ string_operator "string" ]
[ "string" string_operator "string" ]
这里,string_operator可为:
测试数值
测试数值可以使用许多操作符,一般格式如下:
"number" numeric_operator "number"
或者
[ "number" numeric_operator "number" ]
numeric_operator可为:
可以不必将整数值放入变量,直接用数字比较即可,但要加引号。
expr用法
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr也是一个手工命令行计数器。
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义
增量计数expr在循环中用于增量计算。首先,循环初始化为 0,然后循环值加1,反引号的用法意即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量
可以用expr测试一个数。如果试图计算非整数,将返回错误。
/
expr也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成功返回1,任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为“hello”和“hello” 。
模式匹配
expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次.
test
test一般有两种格式,即:
test condition
或
[ condition ]
使用方括号时,要注意在条件两边加上空格。测试文件状态的条件表达式很多,但是最常用的可在下表中查到。
-d | 目录 | -s | 文件长度大于0、非空 |
-f | 正规文件 | -w | 可写 |
-L | 符号连接 | -u | 文件有suid位设置 |
-r | 可读 | -x | 可执行 |
/home/l/g/tomotoboy >test -d sed.out /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >test -f sed.out /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >[ -f sed.out ] /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >[ -d sed.out ] /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >[ -x sed.out ] /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >[ -r sed.out ] /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >[ -w sed.out ] /home/l/g/tomotoboy >echo $? 0
测试时使用逻辑操作符
测试文件状态是否为OK,但是有时要比较两个文件状态。shell提供三种逻辑操作完成此功能。
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
下面比较两个文件sed.out、sed.txt:
/home/l/g/tomotoboy >ls -al sed.out sed.txt -rw-r--r-- 1 tomotoboy member 159 Jul 30 16:47 sed.out -rw-r--r-- 1 tomotoboy member 655 Jul 31 14:44 sed.txt /home/l/g/tomotoboy >[ -w sed.out -a -w sed.txt ] /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >[ -x sed.out -a -r sed.txt] -bash: [: missing `]' /home/l/g/tomotoboy >[ -x sed.out -a -r sed.txt ] /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >[ -x sed.out -o -r sed.txt ] /home/l/g/tomotoboy >echo $? 0
字符串测试
字符串测试是错误捕获很重要的一部分,特别在测试用户输入或比较变量时尤为重要。字符串测试有5种格式:
test "string"
test string_operator "string"
test "string" string_operator "string"
[ string_operator "string" ]
[ "string" string_operator "string" ]
这里,string_operator可为:
= | 两个字符串相等。 |
!= | 两个字符串不等。 |
-z | 空串。 |
-n | 非空串。 |
/home/l/g/tomotoboy >[ -z $HELLO ] /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >HELLO="hello" /home/l/g/tomotoboy >[ -z $HELLO ] /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >[ -n $HELLO ] /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >[ !-n $HELLO ] [ nohup -p 1 $HELLO ] -bash: [: too many arguments /home/l/g/tomotoboy >[ ![ -n $HELLO ] ] [ [ -z $HELLO ] -n $HELLO ] ] -bash: [: too many arguments /home/l/g/tomotoboy >HI="hi" /home/l/g/tomotoboy >[ $HELLO = $HI] -bash: [: missing `]' /home/l/g/tomotoboy >[ $HELLO = $HI ] /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >[ $HELLO != $HI ] /home/l/g/tomotoboy >echo $? 0
测试数值
测试数值可以使用许多操作符,一般格式如下:
"number" numeric_operator "number"
或者
[ "number" numeric_operator "number" ]
numeric_operator可为:
-eq | 数值相等。 |
-ne | 数值不相等。 |
-gt | 第一个数大于第二个数。 |
-lt | 第一个数小于第二个数。 |
-le | 第一个数小于等于第二个数。 |
-ge | 第一个数大于等于第二个数。 |
/home/l/g/tomotoboy >Nbr=10 /home/l/g/tomotoboy >Nbr1=20 /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >Nbr -ne Nbr1 -bash: Nbr: command not found /home/l/g/tomotoboy >$Nbr -ne $Nbr1 -bash: 10: command not found /home/l/g/tomotoboy >[ "$Nbr" -ne "$Nbr1" ] /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >[ "$Nbr" -e "$Nbr1" ] -bash: [: -e: binary operator expected /home/l/g/tomotoboy >[ "$Nbr" -eq "$Nbr1" ] /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >[ "$Nbr" -gt "$Nbr1" ] /home/l/g/tomotoboy >echo 4? 4? /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >[ "$Nbr" -gt "$Nbr1" ] /home/l/g/tomotoboy >echo $? 1 /home/l/g/tomotoboy >[ "$Nbr" -lt "$Nbr1" ] /home/l/g/tomotoboy >echo $? 0
可以不必将整数值放入变量,直接用数字比较即可,但要加引号。
/home/l/g/tomotoboy >[ "99" -ge "60" ] /home/l/g/tomotoboy >echo $? 0
expr用法
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr也是一个手工命令行计数器。
/home/l/g/tomotoboy >expr 10 + 10 20 /home/l/g/tomotoboy >expr 45 / 4 11
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义
/home/l/g/tomotoboy >expr 30 \* 100 3000
增量计数expr在循环中用于增量计算。首先,循环初始化为 0,然后循环值加1,反引号的用法意即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量
/home/l/g/tomotoboy >loop=0 /home/l/g/tomotoboy >loop=`expr $loop + 1` /home/l/g/tomotoboy >echo /home/l/g/tomotoboy >echo $? 0 /home/l/g/tomotoboy >echo $loop 1数值测试
可以用expr测试一个数。如果试图计算非整数,将返回错误。
/
home/l/g/tomotoboy >f=1.1 /home/l/g/tomotoboy >expr f + 10 expr: non-numeric argument /home/l/g/tomotoboy >echo $? 2 /home/l/g/tomotoboy >expr $HELLO + 10 expr: non-numeric argument /home/l/g/tomotoboy >echo $? 2 /home/l/g/tomotoboy >expr "$HELLO" + 10 expr: non-numeric argument /home/l/g/tomotoboy >echo $? 2 /home/l/g/tomotoboy >expr $f + 10 expr: non-numeric argument
expr也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成功返回1,任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为“hello”和“hello” 。
/home/l/g/tomotoboy >expr $HELLO = "hello" 1 /home/l/g/tomotoboy >echo $? 0
模式匹配
expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次.
/home/l/g/tomotoboy >cat sed.txt 605408211 pts/16 Jul 31 13:54 (218.0.1.42) caodejun pts/44 Jul 31 14:16 (219.148.133.31) duke1988 pts/45 Jul 31 14:41 (218.104.163.66) liuzk423 pts/6 Jul 20 08:27 (219.245.104.240) nefu_luyanshen pts/23 Jul 31 14:33 (218.25.6.142) nefu_luyanshen pts/48 Jul 31 12:59 (218.25.6.142) shuzigui pts/21 Jul 31 12:11 (121.35.248.193) tomotoboy pts/41 Jul 31 13:31 (219.221.99.155) waterlooz pts/25 Jul 31 08:48 (121.0.29.225) wsoangel pts/35 Jul 31 13:40 (116.233.219.10) xp55699312 pts/42 Jul 31 14:12 (61.152.132.103) zyy0904 pts/43 Jul 31 13:53 (125.33.195.36) /home/l/g/tomotoboy >VALUE=sed.txt /home/l/g/tomotoboy >expr $VALUE : tomotoboy , '.*' expr: syntax error /home/l/g/tomotoboy >expr $VALUE : tomotoboy 0 /home/l/g/tomotoboy > /home/l/g/tomotoboy >expr $VALUE:tomotoboy sed.txt:tomotoboy /home/l/g/tomotoboy >expr $VALUE: tomotoboy expr: syntax error /home/l/g/tomotoboy >expr $VALUE : tomotoboy 0 /home/l/g/tomotoboy >expr $VALUE :tomotoboy expr: syntax error /home/l/g/tomotoboy >expr $VALUE : tomotoboy 0 /home/l/g/tomotoboy >expr $VALUE : tomotoboy, '.*' expr: syntax error /home/l/g/tomotoboy >expr $VALUE : tomotoboy , '.*' expr: syntax error /home/l/g/tomotoboy >expr $VALUE : '.*' 7 /home/l/g/tomotoboy >expr $VALUE : tomotoboy 0 /home/l/g/tomotoboy >expr $VALUE : "tomotoboy" 0 /home/l/g/tomotoboy >expr $VALUE : "nefu_luyanshen" 0这里没有搞懂,tomotoboy和nefu_luyanshen,明明存在而结果是0
发表评论
-
向脚本传递参数
2009-08-21 16:18 1660shift命令 向脚本传递参数时,有时需要将每一个参数偏移以处 ... -
shell函数
2009-08-10 00:18 1969函数由两部分组成: 函数标题。 函数体。 标题是函数名。函 ... -
后台执行命令——守护进程创建
2009-08-09 19:05 1697当你在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏 ... -
控制流结构——until、while、break、continue
2009-08-08 18:56 2774until循环 条件中1为真, ... -
控制流结构——for
2009-08-08 14:12 987for循环 for 变量名 in 列表 do 命 ... -
控制流结构——case
2009-08-06 12:53 981case语句 case语句为多选择语句。可以用case语句匹配 ... -
控制流结构——if then else
2009-08-05 18:49 2550if then else语句 If 条件1 //如果条 ... -
再谈引号……
2009-08-04 15:37 961引号 /home/l/g/tomotoboy > ech ... -
shell变量及环境变量
2009-08-03 17:54 1518本地变量 显示变量 $GREAT_PICTURE =" ... -
登陆环境
2009-08-03 10:45 854首先看看/etc/passwd 它保存着用户名、加密后的密码等 ... -
Trap命令详解
2009-08-02 17:40 6422原文地址:http://koudai.36 ... -
ulimit命令详解
2009-08-02 17:30 2218原文地址:http://www.diybl.com/cours ... -
tr用法
2009-08-01 15:35 1794tr用来从标准输入中通 ... -
shell合并和分割
2009-07-31 12:43 2797• 实用的分类(sort)操作。 sort命令的一般格式为: ... -
shell输入输出
2009-07-31 12:38 766echo cat read 管道 '|' tee ... -
sed用法介绍
2009-07-30 15:21 2653输出第1行到第3行 -bash-3.00$ sed -n '1 ... -
awk使用
2009-07-29 16:29 1333awk 调用awk有三种方式调 ... -
shell中单引号和双引号的区别
2009-07-29 15:11 1079shell中单引号和双引号的区别 ''可以讲可执行命令文本化 ... -
grep用法详解
2009-07-29 13:45 2521grep grep一般格式为: grep [选项]基本正则表达 ... -
文本过滤
2009-07-28 00:02 7031.使用句点匹配单字符 句点“.”可以匹配任意单字符。例如,如 ...
相关推荐
public class TestExpr4j { /** * @param args */ public static void main(String[] args) { SimpleEvaluationContext context = new SimpleEvaluationContext(); System.out.println("Expr ...
开源项目-antonmedv-expr.zip,expr是一个业务规则引擎
前端项目-expr-eval,Mathematical expression evaluator
相对新手而言,这个实验有较大难度。这里提供大家一个参考。但希望大家还是自己写,你会发现原来这么回事。不要把问题想得太复杂了。
Linux expr命令 expr命令是一个手工命令行计数器,...> expr length “this is a test” 14 2、抓取字串 > expr substr “this is a test” 3 5 is is 3、抓取第一个字符数字串出现的位置 > expr index sarasara a
软件介绍 1、break n 循环控制语句 也可以理解为循环中断语句,跳出循环语句 2、do…while 循环语句 do{ …… } while(expr) 先执行一次循环再判断条件 while(expr){ …… } 先判断条件执再行一次循环 3...
SQL2019在线安装小工具;亲测可以安装
Microsoft SQL Server 2016是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
expr命令的英文全称是“expression”,即是表达式的意思,作用是一个命令行的计数器,常用于在UNIX/...[root@linuxcool ~]# expr length “this is a test” 14 抓取字串: [root@linuxcool ~]# expr substr “thi
SQLServer2016-SSEI-Expr是适用于Windows系统下的2016版,方便使用,请放心下载
实现了四则运算+,-,*,/,max,min,sin,cos四个内值函数。 还有求负和求幂运算。 实现了三元运算符?: 实现了逻辑运算& ! ! 实现了比较运算符 > < >= 可以单独求布尔表达式的值。...编译原理作业
该程序包的目的是允许用户在配置中使用表达式来处理更复杂的逻辑。 它是业务规则引擎基础的完美候选者。
编译原理,实现科学计数器,支持加减乘除,布尔常量,科学计数法等
EXPR是用于记录和分析动物行为的软件包。 通过按下计算机上的特定键盘键来进行记录。 该软件然后保存行为的顺序和时间。 请注意DOS(1995:...
expr10(1).zip
数学表达式计算和解析 用c语言编写的,内含有例.速度较快