TCSH编程(2)
2008-01-09 18:33 Jeff 阅读(1183) 评论(0) 编辑 收藏 举报条件测试
test命令
1,测试文件状态
表达方式:
test condition
返回值:0为成功,其他为失败。
文件测试状态
-d 目录 |
-L 符号连接 |
-s 文件长度大于0,非空 |
-u 文件有suid位设置 |
-f 正规文件 |
-r 可读 |
-w 可写 |
-x 可执行 |
1,逻辑操作符
-a 逻辑与,操作数两端均为真,结果为真,否则为假。
-o 逻辑或,操作数两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
3,字符串测试
格式:test “string” string_operator “string” (其中string_operator为操作符)
= 两个字符串相等 |
!= 两个字符串不等 |
-z 空串 |
-n 非空串 |
4,测试数值
格式:test “number” number_operator “number”(其中number_operator为操作符)
-eq 数值相等 |
-ne 数值不相等 |
-gt 第一个数大于第二个数 |
-lt 第一个数小于第二个数 |
-le 第一个数小于等于第二个数 |
-ge 第一个数大于等于第二个数 |
expr 命令
e x p r命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
e x p r也是一个手工命令行计数器。
例如:expr 100 + 100
200
expr 3 \* 3
9
expr 3 / 3
1
注意:使用乘号时,必须用反斜线屏蔽其特定含义。因为s h e l l可能会误解显示星号的意义。
e x p r命令用于记数:
number = 1
number = `expr $number + 1` (反引号即替代命令,expr $number + 1是命令,不能放在等号右边。如果直接number = expr $number + 1 ,则会报错“set: varibale name must begin with a letter” )
命令执行顺序
在执行某个命令的时候,有时候需要依赖前一个命令是否执行成功。Tcsh中的命令执行顺序控制符
&&
格式:commands && commands
含义:当左边的命令返回真后(执行成功),右边的命令才能执行
例子:
>mv /apps/bin /apps/dev/bin && rm –r /apps/bin
||
格式:commands || commands
含义:当左边的命令没有执行成功则执行右边的命令。
例子:cp 1.txt ob.txt || echo “the cp failed”
()
格式(commands1;commands2;commands3;…..)
含义:在当前的shell中将括号中的命令一起合并执行。
Shell引用类型
一:引用的必要性:
我们在使用文字字符串的时候,经常会因为少用或是漏用引用而造成一些麻烦。比如说:
echo Hit the star button to exit *
则在屏幕上显示的将是Hit the star button to exit 当前目录下的所有目录。因为没有用””所以,shell编译器把*解释为当前所有目录。
二:Shell的引用类型
双引号 |
“” |
反单引号 |
`` |
单引号 |
‘’ |
反斜杠 |
/ |
双引号:
使用双引号可引用除字符 $ ` / 外的任意字符和字符串,必须成对出现。主要是用它来将字符串赋值给变量,实际上和直接赋值变量没有差异。
>Set temp = “date”
>Echo $temp
>date
反单引号:
把UNIX命令放在反引号(` `)中,就能把它的输出结果赋值给变量或是字符串,一一操作被称为命令替换。如果命令的输出赋给一个变量,则将会被保存成一个数组或是词表。
单引号:
可以保护除了!之外的所有元字符不被解释,并且可以保护双引号,必须在同一行内配成对。
>set temp = boy
>echo ‘$temp’
>$temp
>echo “$temp”
>boy
反斜杠:
如果下一个字符有特殊含义,反斜杠防止shell误解其含义,即屏蔽其特殊含义。(含有特殊含义的字符包括 & * + ^ $ ` “ | ? )
例如:为了屏蔽*的特殊含义,而是想仅仅输出一个*号的话,则语句写成
>echo \*.则编译器就会忽略*的特殊意义,而仅仅把它当成一个一般的字符输出