comparison-ops.html
来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· HTML 代码 · 共 981 行 · 第 1/2 页
HTML
981 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD><TITLE>其他比较操作符</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINKREL="HOME"TITLE="高级Bash脚本编程指南"HREF="index.html"><LINKREL="UP"TITLE="条件判断"HREF="tests.html"><LINKREL="PREVIOUS"TITLE="文件测试操作符"HREF="fto.html"><LINKREL="NEXT"TITLE="嵌套的if/then条件测试"HREF="nestedifthen.html"></HEAD><BODYCLASS="SECT1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="fto.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom">7. 条件判断</TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="nestedifthen.html"ACCESSKEY="N">下一页</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="SECT1"><H1CLASS="SECT1"><ANAME="COMPARISON-OPS">7.3. 其他比较操作符</A></H1><P><EM>二元</EM>比较操作符用来比较两个变量或数字. 注意整数比较与字符串比较的区别. </P><P></P><DIVCLASS="VARIABLELIST"><P><B><ANAME="ICOMPARISON1"></A>整数比较</B></P><DL><DT><SPANCLASS="TOKEN">-eq</SPAN></DT><DD><P><ANAME="EQUALREF"></A></P><P>等于</P><P><KBDCLASS="USERINPUT">if [ "$a" -eq "$b" ]</KBD></P></DD><DT><SPANCLASS="TOKEN">-ne</SPAN></DT><DD><P>不等于</P><P><KBDCLASS="USERINPUT">if [ "$a" -ne "$b" ]</KBD></P></DD><DT><SPANCLASS="TOKEN">-gt</SPAN></DT><DD><P>大于</P><P><KBDCLASS="USERINPUT">if [ "$a" -gt "$b" ]</KBD></P></DD><DT><SPANCLASS="TOKEN">-ge</SPAN></DT><DD><P>大于等于</P><P><KBDCLASS="USERINPUT">if [ "$a" -ge "$b" ]</KBD></P></DD><DT><SPANCLASS="TOKEN">-lt</SPAN></DT><DD><P>小于</P><P><KBDCLASS="USERINPUT">if [ "$a" -lt "$b" ]</KBD></P></DD><DT><SPANCLASS="TOKEN">-le</SPAN></DT><DD><P>小于等于</P><P><KBDCLASS="USERINPUT">if [ "$a" -le "$b" ]</KBD></P></DD><DT><ANAME="INTLT"></A><SPANCLASS="TOKEN"><</SPAN></DT><DD><P>小于(在<AHREF="dblparens.html">双括号</A>中使用)</P><P><KBDCLASS="USERINPUT">(("$a" < "$b"))</KBD></P></DD><DT><SPANCLASS="TOKEN"><=</SPAN></DT><DD><P>小于等于(在双括号中使用)</P><P><KBDCLASS="USERINPUT">(("$a" <= "$b"))</KBD></P></DD><DT><SPANCLASS="TOKEN">></SPAN></DT><DD><P>大于(在双括号中使用)</P><P><KBDCLASS="USERINPUT">(("$a" > "$b"))</KBD></P></DD><DT><SPANCLASS="TOKEN">>=</SPAN></DT><DD><P>大于等于(在双括号中使用)</P><P><KBDCLASS="USERINPUT">(("$a" >= "$b"))</KBD></P></DD></DL></DIV><P></P><DIVCLASS="VARIABLELIST"><P><B><ANAME="SCOMPARISON1"></A>字符串比较</B></P><DL><DT><SPANCLASS="TOKEN">=</SPAN></DT><DD><P><ANAME="EQUALSIGNREF"></A></P><P>等于</P><P><KBDCLASS="USERINPUT">if [ "$a" = "$b" ]</KBD></P></DD><DT><SPANCLASS="TOKEN">==</SPAN></DT><DD><P>等于</P><P><KBDCLASS="USERINPUT">if [ "$a" == "$b" ]</KBD></P><P>与<SPANCLASS="TOKEN">=</SPAN>等价.</P><DIVCLASS="NOTE"><P></P><TABLECLASS="NOTE"WIDTH="90%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="./images/note.gif"HSPACE="5"ALT="Note"></TD><TDALIGN="LEFT"VALIGN="TOP"><P> <SPANCLASS="TOKEN">==</SPAN>比较操作符在<AHREF="testconstructs.html#DBLBRACKETS">双中括号对</A>和单中括号对中的行为是不同的. <TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么结果将为真 2 [[ $a == "z*" ]] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真. 3 4 [ $a == z* ] # 文件扩展匹配(file globbing)和单词分割有效. 5 [ "$a" == "z*" ] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真. 6 7 # 感谢, Stephane Chazelas</PRE></FONT></TD></TR></TABLE> </P></TD></TR></TABLE></DIV></DD><DT><SPANCLASS="TOKEN">!=</SPAN></DT><DD><P>不等号</P><P><KBDCLASS="USERINPUT">if [ "$a" != "$b" ]</KBD></P><P>这个操作符将在<AHREF="testconstructs.html#DBLBRACKETS">[[ ... ]]</A>结构中使用模式匹配. </P></DD><DT><ANAME="LTREF"></A><SPANCLASS="TOKEN"><</SPAN></DT><DD><P>小于, 按照ASCII字符进行排序</P><P><KBDCLASS="USERINPUT">if [[ "$a" < "$b" ]]</KBD></P><P><KBDCLASS="USERINPUT">if [ "$a" \< "$b" ]</KBD></P><P>注意<SPANCLASS="QUOTE">"<"</SPAN>使用在<KBDCLASS="USERINPUT">[ ]</KBD>结构中的时候需要被转义. </P></DD><DT><ANAME="GTREF"></A><SPANCLASS="TOKEN">></SPAN></DT><DD><P>大于, 按照ASCII字符进行排序</P><P><KBDCLASS="USERINPUT">if [[ "$a" > "$b" ]]</KBD></P><P><KBDCLASS="USERINPUT">if [ "$a" \> "$b" ]</KBD></P><P>注意<SPANCLASS="QUOTE">">"</SPAN>使用在<KBDCLASS="USERINPUT">[ ]</KBD>结构中的时候需要被转义. </P><P>参考<AHREF="arrays.html#BUBBLE">例子 26-11</A>, 这个例子展示了如何使用这个比较操作符. </P></DD><DT><SPANCLASS="TOKEN">-z</SPAN></DT><DD><P>字符串为<SPANCLASS="QUOTE">"null"</SPAN>, 意思就是字符串长度为零</P></DD><DT><SPANCLASS="TOKEN">-n</SPAN></DT><DD><P>字符串不为<SPANCLASS="QUOTE">"null"</SPAN>.</P><DIVCLASS="CAUTION"><P></P><TABLECLASS="CAUTION"WIDTH="90%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="./images/caution.gif"HSPACE="5"ALT="Caution"></TD><TDALIGN="LEFT"VALIGN="TOP"><P>当<KBDCLASS="USERINPUT">-n</KBD>使用在中括号中进行条件测试的时候, 必须要把字符串用双引号引用起来. 如果采用了未引用的字符串来使用<KBDCLASS="USERINPUT">! -z</KBD>, 甚至是在条件测试中括号(参见<A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?