- 浏览: 167309 次
- 性别:
- 来自: 成都
-
文章分类
最新评论
-
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 1709shift命令 向脚本传递参数时,有时需要将每一个参数偏移以处 ... -
shell函数
2009-08-10 00:18 2019函数由两部分组成: 函数标题。 函数体。 标题是函数名。函 ... -
后台执行命令——守护进程创建
2009-08-09 19:05 1754当你在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏 ... -
控制流结构——until、while、break、continue
2009-08-08 18:56 2856until循环 条件中1为真, ... -
控制流结构——for
2009-08-08 14:12 1035for循环 for 变量名 in 列表 do 命 ... -
控制流结构——case
2009-08-06 12:53 1021case语句 case语句为多选择语句。可以用case语句匹配 ... -
控制流结构——if then else
2009-08-05 18:49 2636if then else语句 If 条件1 //如果条 ... -
再谈引号……
2009-08-04 15:37 1009引号 /home/l/g/tomotoboy > ech ... -
shell变量及环境变量
2009-08-03 17:54 1555本地变量 显示变量 $GREAT_PICTURE =" ... -
登陆环境
2009-08-03 10:45 910首先看看/etc/passwd 它保存着用户名、加密后的密码等 ... -
Trap命令详解
2009-08-02 17:40 6506原文地址:http://koudai.36 ... -
ulimit命令详解
2009-08-02 17:30 2286原文地址:http://www.diybl.com/cours ... -
tr用法
2009-08-01 15:35 1859tr用来从标准输入中通 ... -
shell合并和分割
2009-07-31 12:43 2827• 实用的分类(sort)操作。 sort命令的一般格式为: ... -
shell输入输出
2009-07-31 12:38 810echo cat read 管道 '|' tee ... -
sed用法介绍
2009-07-30 15:21 2716输出第1行到第3行 -bash-3.00$ sed -n '1 ... -
awk使用
2009-07-29 16:29 1398awk 调用awk有三种方式调 ... -
shell中单引号和双引号的区别
2009-07-29 15:11 1119shell中单引号和双引号的区别 ''可以讲可执行命令文本化 ... -
grep用法详解
2009-07-29 13:45 2563grep grep一般格式为: grep [选项]基本正则表达 ... -
文本过滤
2009-07-28 00:02 7611.使用句点匹配单字符 句点“.”可以匹配任意单字符。例如,如 ...
相关推荐
数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 我们不能手工修改数据字典里的信息。 很多时候,一般的ORACLE用户不知道如何有效地利用它。 dictionary...
数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 我们不能手工修改数据字典里的信息。 很多时候,一般的ORACLE用户不知道如何有效地利用它。 dictionary...
- `$(function(){……..});` 页面加载完成后执行匿名函数。 - `$(”div > p”).css(”border”, “1px solid gray”);` 为所有`div`的直接子`p`元素设置边框样式。 - `$.extend(prop)` 扩展jQuery对象,例如添加...
- `$\(function(){……..});`: 在文档加载完成后执行的匿名函数,相当于 `$(document).ready()`. - `$(”div > p”).css(”border”, “1px solid gray”);`: 选择父元素下的子元素并设置 CSS 样式。 - `$(”...
这对于实现条件样式非常有用。 9. **输入元素的值**: `$(”input 元素名称”).val()`用于获取`<input>`元素的值,`$(”input 元素名称”).val(value);`用于设置其值。 10. **元素操作**: - `$(”元素名称”)....
- **元素判断**: `is(expr)`,判断元素是否满足特定的条件。 - **相邻元素**: `next(expr)`,返回紧邻在当前元素后的兄弟元素。 - **排除元素**: `not(el)`、`not(expr)`或`not(elems)`,从集合中排除不匹配的元素。...
本文将深入探讨Linux Shell脚本的基础知识,包括脚本的执行方式、变量使用、系统变量、特殊变量、获取用户输入、条件测试以及流程控制。 首先,Shell脚本的执行方式有三种: 1. 如果脚本的第一个非空字符不是`#`,...
- `$(元素).next(expr)`,`$(元素).prev(expr)`,`$(元素).siblings(expr)`:找到元素的相邻兄弟元素。 6. 核心功能 - `$()`:用于选择DOM元素,可以是HTML字符串、DOM元素或jQuery对象。 - `$(function(){……....
- **示例**:`$("img").attr("src","test.jpg")`将所有`<img>`元素的`src`属性设置为`test.jpg`。 **1.3 html** ```javascript $("元素名称").html(); $("元素名称").html("<b>newstuff</b>"); ``` - **功能**:...
- **`$(function(){……..});`** 页面加载完成时执行函数。例如:`$(document).ready(function() { console.log("Document is ready!"); });` 页面加载完成后打印消息。 - **`$("div>p").css("border","1px solid...
abstract (关键字) 抽象 ['æbstrækt] access vt....输出格式控制: 转义符: \ddd 1到3位8进制数指定Unicode字符输出(ddd) \uxxxx 1到4位16进制数指定Unicode字符输出(xxxx) \\ \ \' ' \" ...
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 47.当一个线程进入一个对象的一个synchronized方法...
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where.. 4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a ...
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where.. 4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a...