澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站shell中if条件字符串,exp

bash&shell体系小说:http://www.cnblogs.com/f-ck-need-u/p/7048359.html**

引用:


expr命令能够完结数值运算、数值或字符串相比、字符串匹配、字符串提取、字符串长度计算等效能。它还持有多少个奇特功能,推断变量或参数是或不是为整数、是还是不是为空、是或不是为0等。

1.expr中文手册(info expr)

先看expr命令的info文档 info expr 的翻译。

16.4.1 字符串表达式
-------------------------
'expr'支持模式匹配和字符串操作。字符串表达式的优先级高于数值表达式和逻辑关系表达式。

'STRING : REGEX'
     执行模式匹配。两端参数会转换为字符格式,且第二个参数被视为正则表达式(GNU基本正则),它默认会隐含前缀"^"。随后将第一个参数和正则模式做匹配。

     如果匹配成功,且REGEX使用了'('和')',则此表达式返回匹配到的,如果未使用'('和')',则返回匹配的字符数。

     如果匹配失败,如果REGEX中使用了'('和')',则此表达式返回空字符串,否则返回为0。

     只有第一个'(...)'会引用返回的值;其余的'(...)'只在正则表达式分组时有意义。

     在正则表达式中,' ','?'和'|'分表代表匹配一个或多个,0个或1个以及两端任选其一的意思。

'match STRING REGEX'
     等价于'STRING : REGEX'。

'substr STRING POSITION LENGTH'
     返回STRING字符串中从POSITION开始,长度最大为LENGTH的子串。如果POSITION或LENGTH为负数,0或非数值,则返回空字符串。

'index STRING CHARSET'
     CHARSET中任意单个字符在STRING中最前面的字符位置。如果在STRING中完全不存在CHARSET中的字符,则返回0。见后文示例。

'length STRING'
     返回STRING的字符长度。

'  TOKEN'
     将TOKEN解析为普通字符串,即使TOKEN是像MATCH或操作符"/"一样的关键字。这使得'expr length   "$x"'或'expr   "$x" : '.*/(.)''可以正常被测试,即使"$x"的值可能是'/'或'index'关键字。这个操作符是一个GUN扩展。
     通用可移植版的应该使用'" $token" : ' (.*)''来代替'  "$token"'。

   要让expr将关键字解析为普通的字符,必须使用引号包围。

16.4.2 算术表达式
--------------------------

'expr'支持普通的算术操作,算术表达式优先级低于字符串表达式,高于逻辑关系表达式。

'  -'
     加减运算。两端参数会转换为整数,如果转换失败则报错。

'* / %'
     乘,除,取模运算。两端参数会转换为整数,如果转换失败则报错。

16.4.3 逻辑关系表达式
---------------------------

'expr'支持普通的逻辑连接和逻辑关系。它的优先级最低。

'|'
     如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。

     经过测试,以上手册内容是错误的。正确的应该是:如果第一个参数非0,则返回第一个参数的值,否则返回第二个参数。但如果任意一个参数为空,则报错。除非空字符串使用引号包围,此时将和0的处理方式一样。

'&'
     如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数。

     经过测试,以上手册内容是错误的。正确的应该是:如果两个参数都非0,则返回第一个参数,否则返回0。但任意一个参数为空,则报错。除非空字符串使用引号包围,此时将和0的处理方式一样。

'< <= = == != >= >'
     比较两端的参数,如果为true,则返回1,否则返回0。"=="是"="的同义词。"expr"首先尝试将两端参数转换为整数,并做算术比较,如果转换失败,则按字符集排序规则做字符比较。

括号'()'可以改变优先级,但使用时需要使用反斜线对括号进行转义。

16.4.4 'expr'使用示例
-------------------------------

以下为expr的一些示例,其中有将shell的元字符使用引号包围的示例。

   将shell中变量'foo'的值增加1:

     foo=$(expr $foo   1)

   输出变量路径变量'$fname'中不包含'/'的文件名部分:

     expr $fname : '.*/(.*)' '|' $fname

     解释:其中的'|'是expr中的连接符,只不过是被引号包围防止被shell解析。例如$fname=/etc/hosts,则此表达式返回hosts,如果$fname=/usr/share/,则此表达式'|'的左边为空,所以返回'|'右边的值,即$fname,即返回/usr/share/。

   An example showing that ' ' is an operator:

     expr aaa : 'a '    # 解释:因为REGEX部分没有使用(),所以返回匹配的字符数
     => 3

     expr abc : 'a(.)c'  # 解释:因为REGEX部分使用了(),所以返回匹配的字符
     => b
     expr index abcdef cz
     => 3
     expr index index a    # 解释:因为第二个index是关键字
     error-> expr: syntax error
     expr index   index a  # 解释:使用 将index关键字解析为普通字符串
     => 0

shell 括号

2.expr接纳示例

下边将利用示例来介绍expr的用法,在介绍早前,需求在意三点:

(1).数值表明式(" - * / %")和比较表明式("< <= = == != >= >")会先将两端的参数转变为数值,转变战败将报错。所以可借此来推断参数或变量是或不是为整数。

(2).expr中的比很多符号供给转义或采取引号包围。

(3).全部操作符的两侧,都急需有空格。

以下是expr示例。

(1)."string : REGEX"字符串匹配示例。要出口匹配到的字符串结果,需求采用"("和")",不然再次来到的将是特别到的字符串数量。

[root@xuexi ~]# expr abcde : 'ab(.*)'
cde

[root@xuexi ~]# expr abcde : 'ab(.)'
c

[root@xuexi ~]# expr abcde : 'ab.*'  
5

[root@xuexi ~]# expr abcde : 'ab.'   
3

[root@xuexi ~]# expr abcde : '.*cd*'
4

瞩目,由于REGEX中隐含了"^",所以使得匹配时都以从string首字符伊始的。

[root@xuexi ~]# expr abcde : 'cd.*'  
0

之所以为0,是因为实在的正则表达式是"^cd.*",而abcde不是c开首而是a起初的,所以不只怕同盟到另外结果。由此,任何字符串相配时,都应有从首字符领头。

字符串相称时,会先将五头参数调换为字符格式。

(2)."index string chars"用法示例。

该表明式是从string中寻觅chars中有些字符的任务,这些字符是string中最靠前的字符。举个例子:

[root@xuexi ~]# expr index abcde dec
3

该命令将对字符串"dec"逐字符分解,首先解释获得第一个字符d,从abcde中查找到d的职务为4,再解释获得第3个字符e,该字符在abcde中的地点为5,最终获得的字符是c,该字符在abcde中的地点为3。个中3是最靠前的字符,所以命令归来的结果为3。

[root@xuexi ~]# expr index abcde xdc
3

若果chars中的全数字符都不设有于string中,则重临0。

[root@xuexi ~]# expr index abcde 1
0

[root@xuexi ~]# expr index abcde 1x
0

(3)."substr string pos len"用法示例。

该表明式是从string中抽取从pos地方上马长度为len的子字符串。要是pos或len为非正整数时,将回到空字符串。

[root@xuexi ~]# expr substr abcde 2 3
bcd

[root@xuexi ~]# expr substr abcde 2 4
bcde

[root@xuexi ~]# expr substr abcde 2 5
bcde

[root@xuexi ~]# expr substr abcde 2 0

[root@xuexi ~]# expr substr abcde 2 -1

(4)."length string"用法示例。该表明式是回到string的尺寸,在这之中string不容许为空,不然将报错,所以能够用来剖断变量是不是为空。

[root@xuexi ~]# expr length abcde
5

[root@xuexi ~]# expr length 111
3

[root@xuexi ~]# expr length $xxx
expr: syntax error

[root@xuexi ~]# if [ $? -ne 0 ];then echo '$xxx is null';fi
$xxx is null

(5)." token"用法示例。

expr中稍微符号和首要字有异样意义,如"match"、"index"、"length",纵然要让其变为字符,使用该表明式将任性token强制深入分析为常见字符串。

[root@xuexi ~]# expr index index d
expr: syntax error

[root@xuexi ~]# expr index length g
expr: syntax error

[root@xuexi ~]# expr index   length g
4

实在能够透过字符串相配的不二等秘书诀,将第一字调换为字符串。举个例子:

[root@xuexi ~]# expr index 'length : "(length)"' g 
4

对值为入眼字的变量来说,则不在乎。

[root@xuexi ~]# len=lenght

[root@xuexi ~]# expr index $len g
4

(6).算术运算用法示例。

[root@xuexi ~]# expr 1   2
3

[root@xuexi ~]# a=3
[root@xuexi ~]# b=4

[root@xuexi ~]# expr $a   $b
7

[root@xuexi ~]# expr 4   $a
7

[root@xuexi ~]# expr $a - $b
-1

算术乘法符号"*"因为是shell的元字符,所以要转义,能够动用引号包围,或许选用反斜线。

[root@xuexi ~]# expr $a * $b
expr: syntax error

[root@xuexi ~]# expr $a '*' $b
12

[root@xuexi ~]# expr $a * $b
12

[root@xuexi ~]# expr $b / $a    # 除法只能取整数
1

[root@xuexi ~]# expr $b % $a
1

自由操作符两端都亟需有空格,不然:

[root@xuexi ~]# expr 4 $a 
4 3

[root@xuexi ~]# expr 4  $a
expr: syntax error

由于expr在进展算术运算时,首先会将操作符两侧的参数转变为整数,大肆一端转移退步都将会报错,所以可以用来决断参数或变量是或不是为整数。

[root@xuexi ~]# expr $a   $c
expr: non-integer argument

[root@xuexi ~]# if [ $? != 0 ];then echo '$a or $c is non-integer';fi          
$a or $c is non-integer

(7).相比操作符< <= = == != >= >用法示例。个中"<"和">"是正则表明式正的锚定元字符,且"<"会被shell剖析为重定向符号,所以需求转义或用引号包围。

那一个操作符会首先会将两侧的参数转变为数值,要是转变到功,则运用数值相比,假若调换退步,则根据字符集的排序准则举行字符大小相比。相比的结果若为true,则expr重临1,不然重返0。

[root@xuexi ~]# a=3

[root@xuexi ~]# expr $a = 1
0

[root@xuexi ~]# expr $a = 3
1

[root@xuexi ~]# expr $a * 3 = 9
1

[root@xuexi ~]# expr abc > ab
1

[root@xuexi ~]# expr akc > ackd
1

(8).逻辑连接符号"&"和"|"用法示例。那八个标记都必要转义,或行使引号包围。

以下是法定文书档案中付出的分解,但实际上利用进度中是不完全准确的。

"&"表示一旦五个参数同偶尔间满意非空且非0,则赶回第叁个参数的值,不然重临0。且只要开掘第多少个参数为空或0,则一贯跳过第一个参数不做别的总括。

"|"表示若是第叁个参数非空且非0,则赶回第贰个参数值,不然重返第贰个参数值,但只要第三个参数为空或为0,则重返0。且假使开掘第一个参数非空或非0,也将一贯跳过第2个参数不做任何计算。

没错的应当是:

"&"表示如若三个参数都非0,则赶回第多个参数,不然重回0。但随意一个参数为空,则expr报错。除非空字符串使用引号包围,则管理方法和0同样。

"|"表示只要第一个参数非0,则赶回第二个参数的值,不然重临第2个参数。但假诺任性四个参数为空,则expr报错。除非空字符串使用引号包围,则管理方法和0同样。

[root@xuexi ~]# expr $abc '|' 1
expr: syntax error

[root@xuexi ~]# expr "$abc" '|' 1
1

[root@xuexi ~]# expr "$abc" '&' 1 
0

[root@xuexi ~]# expr $abc '&' 1 
expr: syntax error

[root@xuexi ~]# expr 0 '&' abc
0

[root@xuexi ~]# expr abc '&' 0
0

[root@xuexi ~]# expr abc '|' 0
abc

[root@xuexi ~]# expr 0 '|' abc  
abc

[root@xuexi ~]# expr abc '&' cde
abc

[root@xuexi ~]# expr abc '|' cde
abc

学习shell的时候总是被shell里的法规推断格局搞得头疼,经常不知道改 用[],[[]],(())如故test,let,而很稀少书把它们的涉及讲明的很了然(应该是本人悟性差或是看书太少),后天总结一下,基础的事物如它们 的行使办法不再赘述,器重说说它们的界其他选取时应该注意的地点。

先说[]和test,两个是一律的,在命令行里test expr和[ expr ]的功力同样。test的四个大旨效用是判定文件、判别字符串、推断整数。扶持接纳与或非将表明式连接起来。要潜心的有:

1.test中可用的可比运算符唯有==和!=,两个都以用于字符串比较的,不可用于整数相比,整数相比只可以选用-eq, -gt这种样式。无论是字符串相比较照旧子弹头相比较都相对不要选择超越号小于号。当然,如若您实际想用也是足以的,对于字符串相比较能够使用尖括号的转义情势, 倘使相比"ab"和"bc":[ ab < bc ],结果为真,也正是回来状态为0.

然后是[[ ]],那是内置在shell中的几个命令,它就比刚刚说的test强盛的多了。支持字符串的情势相配(使用=~操作符时以致补助shell的正则表明式)。几乎强盛的令人切齿!逻辑组合能够不行使test的-a,-o而使用&&,||那样更紧凑的样式(针对c、Java技士)。当 然,也不用想的太复杂,基本若是记住
1.字符串相比时能够把右侧的当做一个情势(那是左侧的字符串不加双引号的情状下。倘使侧边的字符串加了双引号,则感觉是二个文本字符串。),而不止是贰个字符串,例如[[ hello == hell? ]],结果为真。

除此以外要注意的是,使用[]和[[]]的时候绝不吝啬空格,每一种两侧都要有空格,[[ 1 == 2 ]]的结果为“假”,但[[ 1==2 ]]的结果为“真”!后一种举世瞩目是错的

3.谈到底便是let和(()),两个也是均等的(恐怕说基本上是均等的,双括号比let稍弱一些)。首要举办算术运算(下面的四个都至极),也相比符合举行整数比较,可以直接运用深谙的<,>等相比运算符。能够直接行使变量名如var而没有供给$var那样的方式。扶持分号隔开分离的三个表达式

####################################################################################################################################

  1. 第一,固然很相像,但是从概念上讲,二者是例外档次的东西。
    "[[",是关键字,多数shell(如ash bsh)并不帮助这种措施。ksh, bash(听他们讲从2.02起引进对[[的支持)等支持。
    "["是一条命令, 与test等价,大比很多shell都帮衬。在当代的绝大大多sh达成中,"["与"test"是中间(builtin)命令,换句话说实行"test"/"["时不会调用/some/path/to/test那样的外界命令(借使有这么的指令的话)。

2.[[]]结构比Bash版本的[]更通用。在[[和]]以内的有着的字符都不会被文件扩大或是标识分割,可是会有参数引用和指令替换。

用[[ ... ]]测试组织比用[ ... ]更能防范脚本里的广大逻辑错误。比方说,&&,||,<和>操作符能在三个[[]]测量检验里透过,但在[]结构会发出错误。

3.(( ))结构扩充并计算贰个算术表明式的值。要是发挥式值为0,会回到1或假作为退出状态码。二个非零值的表达式再次来到叁个0或真作为退出状态码。这一个布局和原先test命令及[]组织的座谈刚好相反。

4.[ ... ]为shell命令,所以在里边的表明式应是它的命令行参数,所以串比较操作符">" 与"<"必需转义,不然就改成IO改向操作符了(请参见上面第22中学的例子)。在[[中"<"与">"不需转义;
由于"[["是不能缺少字,不会做命令行扩充,由此相对的语法就稍严俊些。举个例子
在[ ... ]中得以用引号括起操作符,因为在做命令行扩充时会去掉那几个引号,而在[[ ... ]]则不容许那样做。

5.[[ ... ]]拓宽算术扩张,而[ ... ]不做

6.[[ ... && ... && ...  ]] 和 [ ... -a ... -a ...] 不一样,[[ ]] 是逻辑不通操作,而 [ ] 不会开展逻辑不通

1)在ksh中的test
数字的运算可利用let、(( )) ,此中运算时无需变量$符号,运算符为 、-、*、/、% ,不建议使用expr
数字的可比使用 (( )) ,其运算符 >、>=、<、<=、==、!=
能够应用算术扩充,如:(( 99 1 <= 101 ))
字符说明式的相比使用 [[ ]] ,其运算符 =、!=、-n、-z
文件表明式的测量试验使用 [[ ]] ,其运算符 -r、-l、-w、-x、-f、-d、-s、-nt、-ot
逻辑表达式的测验使用 [[ ]] ,其运算符 !、&&、||
数字比较、字符比较、逻辑测验能够组合,如$ [[ "a" != "b" && 4 -gt 3 ]]
支撑bash中的通配符扩展,如:[[ hest = h??t ]] 、[ hest = h*t ]]
使用 (( )) 时,不要求空格分隔各值和平运动算符,使用 [[ ]] 时须要用空格分隔各值和平运动算符。

2)bash与ksh中的 [[ ]] 不同
在redhat9的bash中也能够选拔 [[ ]] 符号。然而提议严酷遵照地方的尺度使用。
在bash中,数字的可比最棒应用 (( )),虽说可以动用 [[ ]],但若在其Nelly用运算符 >、>=、<、<=、==、!= 时,其结果常常是一无所能的,可是若在 [[ ]] 中使用 [ ] 中的运算符“-eq、-ne、-le、-lt、-gt、-ge”等,还未曾意识有错。由此诸如$ [[ " a" != “b” && 4 > 3 ]] 那类组合(见上)也不能在bash中行使,其出错率非常高。
例:[[ "a" != "b" && 10 > 2 ]] 推断结果就不健康。
诸如 [ 2 < 10 ]、[[ 2 < 10 ]] 都是无须选取。使用算术扩充最佳用 (( 99 1 == 100 )) ,而毫不使用[[ 99 1 -eq 100 ]] 。

澳门新浦京娱乐场网站 1

运算符

描述

示例

文件比较运算符

-e filename

如果 filename 存在,则为真

[ -e /var/log/syslog ]

-d filename

如果 filename 为目录,则为真

[ -d /tmp/mydir ]

-f filename

设若 filename 为不荒谬文件,则为真

[ -f /usr/bin/grep ]

-L filename

即使 filename 为标记链接,则为真

[ -L /usr/bin/grep ]

-r filename

如果 filename 可读,则为真

[ -r /var/log/syslog ]

-w filename

如果 filename 可写,则为真

[ -w /var/mytmp.txt ]

-x filename

如果 filename 可执行,则为真

[ -L /usr/bin/grep ]

filename1 -nt filename2

如果 filename1 比 filename2 新,则为真

[ /tmp/install/etc/services -nt /etc/services ]

filename1 -ot filename2

如果 filename1 比 filename2 旧,则为真

[ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串相比运算符 (请小心引号的行使,那是严防空格干扰代码的好方式)

-z string

万一 string 长度为零,则为真

[ -z "$myvar" ]

-n string

若果 string 长度非零,则为真

[ -n "$myvar" ]

string1 = string2

如果 string1 与 string2 相同,则为真

[ "$myvar" = "one two three" ]

string1 != string2

如果 string1 与 string2 不同,则为真

[ "$myvar" != "one two three" ]

算术比较运算符

num1 -eq num2

等于

[ 3 -eq $mynum ]

num1 -ne num2

不等于

[ 3 -ne $mynum ]

num1 -lt num2

小于

[ 3 -lt $mynum ]

num1 -le num2

稍低于或等于

[ 3 -le $mynum ]

num1 -gt num2

大于

[ 3 -gt $mynum ]

num1 -ge num2

超过或等于

[ 3 -ge $mynum ]

测量试验命令

  test命令用于检查有个别条件是还是不是建设构造,它能够扩充数值、字符和文书3个方面的测量试验,其测量试验符和相应的功效分别如下。

  (1)数值测量试验:

  -eq 等于则为真。

  -ne 不等于则为真。

  -gt 大于则为真。

  -ge 大于等于则为真。

  -lt 小于则为真。

  -le 小于等于则为真。

  (2)字串测量试验:

  = 等于则为真。

  != 不对等则为真。

  -z字串 字串长度伪则为真。

  -n字串 字串长度不伪则为真。

  (3)文件测试:

  -e文件名 倘诺文件存在则为真。

  -r文件名 假若文件存在且可读则为真。

  -w文件名 假诺文件存在且可写则为真。

  -x文件名 假设文件存在且可进行则为真。

  -s文件名 假使文件存在且至稀有贰个字符则为真。

  -d文件名 如若文件存在且为目录则为真。

  -f文件名 如若文件存在且为普通文书则为真。

  -c文件名 纵然文件存在且为字符型特殊文件则为真。

  -b文件名 只要文件存在且为块优异文件则为真

法规变量替换: 
   Bash Shell能够开展变量的条件替换,既只有某种条件产生时才举行轮换,替换 
标准放在{}中. 
(1) ${value:-word} 

       当变量未定义可能值为空时,重回值为word的内容,不然再次来到变量的值. 

(2) ${value:=word} 

       与前者类似,只是若变量未定义也许值为空时,在回来word的值的还要将 

       word赋值给value 

(3) ${value:?message} 

       若变量以赋值的话,符合规律替换.不然将音讯message送到正式错误输出(若 

       此替换出现在Shell程序中,那么该程序将终止运营) 

(4) ${value: word} 

       若变量以赋值的话,其值才用word替换,不然不开展任何替换 

(5) ${value:offset} 
       ${value:offset:length} 
       从变量中领到子串,这里offset和length能够是算术表明式. 

(6) ${#value} 

       变量的字符个数 

(7) ${value#pattern} 
       ${value##pattern} 
       去掉value中与pattern相相称的一对,条件是value的初阶与pattern相相配 
       #与##的区别在于三个是最短相配情势,贰个是最长匹配情势. 

(8) ${value%pattern} 

       ${value%%pattern} 
       于(7)类似,只是是从value的尾巴于pattern相匹配,%与%%的分别与#与##一样 

(9) ${value/pattern/string} 

       ${value//pattern/string} 
       举办变量内容的交替,把与pattern相称的有的替换为string的内容,/与//的界别与上同 

静心: 上述规范变量替换中,除(2)外,其他均不影响变量本人的值 

#!/bin/bash

var1="1"
var2="2"

上边是还要的演算符-a,其他注意,用叁个test命令就可以了,还会有if条件前边的分集团

if test $var1 = "1"-a $var2 = "2" ; then
   echo "equal"
fi

下边是或运算符 -o,有一个为真就能够

if test $var1 != "1" -o $var2 != "3" ; then
   echo "not equal"
fi

下边是非运算符 !
if条件是为实在时候实施,假诺选择!运算符,那么原表达式必需为false

if ! test $var1 != "1"; then
   echo "not 1"
fi

以上多少个if都为真,所以四个echo都会打印

在三个文书档案把那多少个运算法说的一无可取,于是自个儿动手实验了瞬间


shell字符串比较、判别是不是为数字

 

二元相比操作符,比较变量也许正如数字.注意数字与字符串的分歧.

莫西干发型相比

-eq       等于,如:if [澳门新浦京娱乐场网站shell中if条件字符串,expr命令全解。 "$a" -eq "$b" ]
-ne       不等于,如:if [ "$a" -ne "$b" ]
-gt       大于,如:if [ "$a" -gt "$b" ]
-ge       大于等于,如:if [ "$a" -ge "$b" ]
-lt       小于,如:if [ "$a" -lt "$b" ]
-le       小于等于,如:if [ "$a" -le "$b" ]
<       小于(须要双括号),如:(("$a" < "$b"))
<=       小于等于(需求双括号),如:(("$a" <= "$b"))
>       大于(必要双括号),如:(("$a" > "$b"))
>=       大于等于(须要双括号),如:(("$a" >= "$b"))

字符串比较
=       等于,如:if [ "$a" = "$b" ]
==       等于,如:if [ "$a" == "$b" ],与=等价
       注意:==的功力在[[]]和[]中的行为是例外的,如下:
       1 [[ $a == z* ]]    # 假若$a以"z"初阶(格局相称)那么将为true
       2 [[ $a == "z*" ]] # 如果$a等于z*(字符相配),那么结果为true
       3
       4 [ $a == z* ]      # File globbing 和word splitting将会发出
       5 [ "$a" == "z*" ] # 如果$a等于z*(字符相配),那么结果为true
       一点分解,关于File globbing是一种关于文件的速记法,比方"*.c"就是,再如~也是.
       不过file globbing并非严谨的正则表明式,虽然非常多情形下结构比较像.
澳门新浦京娱乐场网站shell中if条件字符串,expr命令全解。!=       不等于,如:if [ "$a" != "$b" ]
       那个操作符就要[[]]结构中选用格局相配.
<       小于,在ASCII字母顺序下.如:
       if [[ "$a" < "$b" ]]
       if [ "$a" < "$b" ]
       注意:在[]布局中"<"需求被转义.
>       大于,在ASCII字母顺序下.如:
       if [[ "$a" > "$b" ]]
       if [ "$a" > "$b" ]
       注意:在[]组织中">"须要被转义.
       具体参照他事他说加以考察Example 26-11来查阅那个操作符应用的例子.
-z       字符串为"null".便是长度为0.
-n       字符串不为"null"
       注意:
       使用-n在[]结构中测量检验供给求用""把变量引起来.使用多个未被""的字符串来行使! -z
       也许便是未用""援用的字符串本身,放到[]协会中。就算平日情形下可
       以办事,但那是不安全的.习于旧贯于选取""来测量试验字符串是一种好习贯.

Yorking Alan

本文由澳门新浦京娱乐场网站发布于澳门新浦京娱乐场网站,转载请注明出处:澳门新浦京娱乐场网站shell中if条件字符串,exp