Chinaunix

标题: 判断输入参数的-o,-z是啥意思 [打印本页]

作者: love2000    时间: 2007-06-21 15:05
标题: 判断输入参数的-o,-z是啥意思
rt
?(if [ -z "$1" -o -z "$2" -o -z "$3" ])
作者: ly5066113    时间: 2007-06-21 15:10
http://www.linuxsir.org/main/doc ... comparison-ops.html
作者: love2000    时间: 2007-06-21 15:13
我访问不了那个网站。
公司限制了:(
作者: ly5066113    时间: 2007-06-21 15:19
-z
字符串为"null",即是指字符串长度为零。

-n
字符串不为"null",即长度不为零.



混合比较

-a
逻辑与

如果exp1和exp2都为真,则exp1 -a exp2返回真.

-o
逻辑或

只要exp1和exp2任何一个为真,则exp1 -o exp2 返回真.
作者: love2000    时间: 2007-06-21 15:40
在问一下,那么参数为什么加引号呢?
它和不加引号有何区别?
刚刚开始学习sh,所以弄的太少,不好意思了
作者: davistar    时间: 2007-06-21 15:56

  1. $ a=" "         /*空格*/

  2. ~/shell
  3. $ [ -z $a ] && echo zero || echo not zero
  4. zero

  5. ~/shell
  6. $ [ -z "$a" ] && echo zero || echo not zero
  7. not zero
复制代码

作者: ly5066113    时间: 2007-06-21 15:56
当要引用一个变量的值时,一般推荐使用双引号。使用双引号除了变量名前缀($)、后引符(`)和转义符(\)外,会使shell不再解释引号中其它所有的特殊字符。用双引号还能使句子不被分割开,一个参数用双引号引起来能使它被看做一个单元,这样即使参数里面包含有空白字符也不会被shell分割开了。

在一个混合测试中,把一个字符串变量引号引起来可能还不够。如果$string变量是空的话,表达式[ -n "$string" -o "$a" = "$b" ]在一些Bash版本中可能会引起错误。安全的办法是附加一个外部的字符串给可能有空字符串变量比较的所有变量,[ "x$string" != x -o "x$a" = "x$b" ](x字符可以互相抵消)。

[ 本帖最后由 ly5066113 于 2007-6-21 15:58 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2