Spark修炼之道(基础篇)——Linux大数据开发基础:第十三节:Shell编程入门(五)

本节主要内容

  1. while循环控制结构
  2. if条件判断
  3. until循环控制结构

    1. while循环控制结构

    本节例子来源:http://blog.chinaunix.net/uid-25880122-id-2901409.html 
    语法格式:

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> expression
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">do</span>
<span class="hljs-command" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">command</span></span>
<span class="hljs-command" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">command</span></span>
done</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>

(1)计数器格式

适用于循环次数已知或固定时

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim whileLoop.sh</span>
.<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#!/bin/bash</span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span>((<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span><<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>))
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">do</span>
echo <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span>
let i++
done

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># chmod a+x whileLoop.sh </span>
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./whileLoop.sh </span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul>

(2)标志符结束while循环

<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root@sparkslave02:~/ShellLearning/Chapter13<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim flagWhileLoop.sh</span>
<span class="hljs-shebang" style="color: rgb(0, 102, 102); box-sizing: border-box;">#!/bin/bash</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Please input the num (1~~10): "</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#接受用户输入</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">read</span> num
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> [[ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$num</span> != <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> ]]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">do</span>
 <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#if语句,后面详细介绍,这里判断是否小于4</span>
 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$num</span> <span class="hljs-operator" style="box-sizing: border-box;">-lt</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> ]
 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Too small ,Try again.."</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">read</span> num
 <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断是否大于4</span>
 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">elif</span> [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$num</span> <span class="hljs-operator" style="box-sizing: border-box;">-gt</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> ]
 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Too big ,Try again.. "</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">read</span> num
 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">exit</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>
 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">fi</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">done</span>
<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Yes ,you are right !!"</span>

root@sparkslave02:~/ShellLearning/Chapter13<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># chmod a+x flagWhileLoop.sh root@sparkslave02:~/ShellLearning/Chapter13# ./flagWhileLoop.sh </span>
Please input the num (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>~~<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>): 
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>
Yes ,you are right !!
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul>

## 2. if条件判断## 
参考:http://blog.chinaunix.net/uid-20735106-id-3434959.html 
shell 脚本中的if条件判断功能十分强大,但使用也异常复杂,其语法格式:

<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>  条件
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
 Command
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
 Command
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#if条件判断的结束,用反拼表示</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">fi</span>                           </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>

最常用的判断为:判断字符串、判断数字、判断文件及逻辑判断等

(1)判断字符串

<code class="hljs lua has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ str1=str2 ];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span> fi  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">----当两个字符串相同时返回真</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ str1!=str2 ];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span> fi <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">----当两个字符串不相等时返回真</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ -n str1 ];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span> fi    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">----当字符串的长度大于0时返回真 (判断变量是否有值)</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ -z str1 ];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span> fi    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">----当字符串的长度为0时返回真</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim if01.sh</span>
str1=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hello"</span>
str2=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hell"</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断两字符串是否相等</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ str1=str2 ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"equal"</span>
fi

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断两字符串是否不等</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ str1!=str2 ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"not equal"</span>
fi

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断字符串长度是否大于0</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ -n str1 ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"the length of str1 is not zero"</span>
fi

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断字符串长度是否等于0</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ -z str1 ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"the length of str1 is not zero, it can't be executed"</span>
fi

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./if01.sh </span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> equal
the length of str1 is <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> zero
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li></ul>

(2)判断数字

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int1</span> -eq <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int2</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--相等</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int1</span> -ne <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int2</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--不相等</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int1</span> -gt <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int2</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--大于</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int1</span> -ge <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int2</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--大于等于</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int1</span> -lt <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int2</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--小于</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int1</span> -le <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int2</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--小于等于</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>

使用示例:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim if02.sh</span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
j=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span> -lt <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$j</span> ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
   echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i is less than j"</span>
fi

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$j</span> -gt <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span> ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
   echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"j is great than i"</span>
fi

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># chmod a+x if02.sh </span>

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./if02.sh </span>
i is less than j
j is great than i
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul>

(3)判断文件

文件判断常用命令如下:

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.</span> -r <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--用户可读为真</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.</span> -w <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--用户可写为真</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.</span> -x <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--用户可执行为真</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4.</span> -f <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--文件存在且为正规文件为真</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.</span> -d <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--如果是存在目录为真</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6.</span> -c <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--文件存在且为字符设备文件</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7.</span> -b <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--文件存在且为块设备文件</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8.</span> -s <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--文件大小为非0为真,可以判断文件是否为空</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9.</span> -e <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--如果文件存在为真</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>

使用示例:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim if03.sh</span>
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># chmod a+x if03.sh </span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断文件是否存在</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ -f if03.sh ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
   echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"if03.sh exists!!"</span>
fi
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断目录是否存在</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ -d ../<span class="hljs-constant" style="box-sizing: border-box;">Chapter13</span> ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
   echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"directory Chapter13 exists!!"</span>
fi

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./if03.sh </span>
if03.sh exists!!
directory <span class="hljs-constant" style="box-sizing: border-box;">Chapter13</span> exists!!
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li></ul>

(4)逻辑判断

逻辑判断主要有下面三个命令

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.</span> -<span class="hljs-operator" style="box-sizing: border-box;">a</span>     <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--与</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.</span> -o     <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--或</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.</span> !      <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--非</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

使用示例:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim if04.sh</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#判断if04.sh文件与目录Chapter13是否同时存在,同时存在则为真</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ -f if04.sh -a -d ../<span class="hljs-constant" style="box-sizing: border-box;">Chapter13</span> ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
   echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"file if04.sh and directory Chapter13  both exists!!!"</span>
fi

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># chmod a+x if04.sh </span>
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./if04.sh </span>
file if04.sh <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> directory <span class="hljs-constant" style="box-sizing: border-box;">Chapter13</span>  both exists!!!
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>

(5)if [] then else fi的用法

前面给出的例子都是if [] then fi的形式,这里再给出if [] then else fi的用法

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim if05.sh</span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span> -lt <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span> ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i is less than 6"</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i is great than or equal  6"</span>
fi

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># chmod a+x if05.sh </span>
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./if05.sh </span>
i is great than <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> equal  <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>

</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

(6)if [] then elif then else fi的用法

多种判断,看示例代码就能明白:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># cp if05.sh if06.sh</span>
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim if06.sh</span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span> -le <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span> ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i is less than 6"</span>
elif [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span> -eq <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span> ]
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i equal 7"</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
  echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i is great than 7"</span>
fi

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./if06.sh </span>
i equal <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul>

## 3. until循环控制结构##

语法格式:

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">until</span> condition
  <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">do</span>
     <span class="hljs-command" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">command</span></span>
 done</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

使用示例:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># vim until01.sh</span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">until</span> [ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$i</span> -gt <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> ]  
 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">do</span>
 let i+=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
 echo <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"i=$i"</span>  
done

root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># chmod a+x until01.sh </span>
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@sparkslave02</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:~/ShellLearning/Chapter13</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ./until01.sh </span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

转载: http://blog.csdn.net/lovehuangjiaju/article/details/48917587

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值