0340bashshell-scripts.htm

来自「鸟哥LINUX 学习课本」· HTM 代码 · 共 1,372 行 · 第 1/5 页

HTM
1,372
字号
<br><font size="-1" color="#ffffff" face="SimSun">#!/bin/bash</font><br><font size="-1" color="#ffffff" face="SimSun"># This programis used to "declare" variables</font><br><font size="-1" color="#ffffff" face="SimSun"># VBird 2002/06/27</font><br><font size="-1" color="#ffffff" face="SimSun">number1=2*3+5*13-32+25</font><br><font size="-1" color="#ffffff" face="SimSun">declare -inumber2=2*3+5*13-32+25</font><br><font size="-1" color="#ffffff" face="SimSun">echo "Yourresult is ==&gt; $number1"</font><br><font size="-1" color="#ffffff" face="SimSun">echo "Yourresult is ==&gt; $number2"</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root @testtest]# </font><font color="#ffff00">sh test03-declare.sh</font></font><br><font size="-1" color="#ffffff" face="SimSun">Your resultis ==&gt; 2*3+5*13-32+25</font><br><font size="-1" color="#ffffff" face="SimSun">Your resultis ==&gt; 64</font></td></tr></tbody></table><p><font color="#000000">怎样?很有趣吧!更好玩的还在后头呦!再往下看一下吧!</font></p></blockquote><hr width="100%"><a name="read1"></a><font size="+1" color="#000099">对谈式scripts :</font><blockquote>什么是对谈式的 scripts 呢?很简单啦!例如你在执行 Windows 的安装程序时,系统不是常常会跳出一个窗口,问你『下一步』、『上一步』或『取消』吗?那就是对谈啦!程序会依据您输入的数据来进行判断,OK!那么最简单的对谈式指令是什么呢?呵呵!就是read 这个指令啦! read 的功能就是『<b>依据您在键盘输入的结果 input 到变量内容中</b>』,例如:<br>&#160;<table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root @testtest]#&#160;<a name="read"></a></font><font color="#ffff00">read name</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">VBird</font><font color="#ff9900">&lt;==这是键盘输入的结果</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root @testtest]# </font><font color="#ffff00">echo $name</font></font><br><font size="-1" color="#ffffff" face="SimSun">VBird</font></td></tr></tbody></table><p>好了!那么我们来设定一下,当您的 script 在执行的时候,将您由键盘输入的数据列出来!如何做呢?<br>&#160;<table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" color="#ffffff" face="SimSun">[root @testtest]# vi test04-read.sh</font><br><font size="-1" color="#ffffff" face="SimSun">#!/bin/bash</font><br><font size="-1" color="#ffffff" face="SimSun"># This programis used to "read" variables</font><br><font size="-1" color="#ffffff" face="SimSun"># VBird 2002/06/27</font><br><font size="-1" color="#ffffff" face="SimSun">echo "Pleasekeyin your name, and press Enter to start."</font><br><font size="-1" color="#ffffff" face="SimSun">read name</font><br><font size="-1" color="#ffffff" face="SimSun">echo "Thisis your keyin data ==&gt; $name"</font><br><font size="-1" color="#ffffff" face="SimSun">[root @testtest]# sh test04-read.sh</font><br><font size="-1" color="#ffff00" face="SimSun">Please keyinyour name, and press Enter to start.</font><br><font size="-1" color="#ffff00" face="SimSun">VBird Tsai</font><br><font size="-1" color="#ffff00" face="SimSun">This is yourkeyin data ==&gt; VBird Tsai</font></td></tr></tbody></table></p><p>就是这么简单,我们后面还会继续的谈到判别式,那个时候输入的数据可就更重要了!</p></blockquote><blockquote>好了!下一步我们再来说一说怎样定义一个 script 的参数的代号!?以底下我们的说明为例:<br>&#160;<table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root @testtest]#</font><font color="#ffff00"> myscript opt1 opt2 opt3 opt4</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">       </font><font color="#ffff00"> </font><font color="#ff9900">  $0   $1  $2  $3  $4</font></font></td></tr></tbody></table><p>这是什么意思呢?嘿嘿!就是说,在这个 script ( myscript )里面,只要变量名称为$0 就表示为 myscript 这个咚咚,也就是说:</p><blockquote><font color="#000066" face="SimSun">$0 : myscript 亦即是script 的檔名</font><br><font color="#000066" face="SimSun">$1 : opt1 亦即是第一个附加的参数(parameter)</font><br><font color="#000066" face="SimSun">$2 : opt2</font><br><font color="#000066" face="SimSun">$3 : opt3</font></blockquote>这样说或许不是很清楚,我们来玩一玩底下这个 script 看看就晓得他的意思啦!<br>&#160;<table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root @testtest]# </font><font color="#ffff00">vi test05-0123</font></font><br><font size="-1" color="#ffffff" face="SimSun">#!/bin/bash</font><br><font size="-1" color="#ffffff" face="SimSun"># This programwill define what is the parameters</font><br><font size="-1" color="#ffffff" face="SimSun"># VBird 2002/06/27</font><br><font size="-1" color="#ffffff" face="SimSun">echo "Thisscript's name =&gt; $0"</font><br><font size="-1" color="#ffffff" face="SimSun">echo "parameters$1 $2 $3"</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root @testtest]# </font><font color="#ffff00">sh test05-0123 pa1 pa2 pa3</font></font><br><font size="-1" color="#ffffff" face="SimSun">This script'sname =&gt; test05-0123</font><br><font size="-1" color="#ffffff" face="SimSun">parameterspa1 pa2 pa3</font></td></tr></tbody></table><p>这个东西在运用上也是相当的重要的,例如当您要取得 script 的名称时(因为有时候使用者会自行更改文件名称),则这个功能变量就相当的重要了!了解乎!?</p></blockquote><hr width="100%"><a name="scripts_logical"></a><font size="+1" color="#000099">scripts逻辑判断式与表达式:</font><blockquote><font color="#000000">再来的这个东西可就更重要了,尤其在 scripts当中!那就如『</font><b><font color="#000099">如何判定某个档案或目录,或者是如何判定程序应该朝向那个方向行进</font></b><font color="#000000">』?这个东西需要有比较好一些的逻辑概念的说明才行!底下我们分别说明一下逻辑判断式与表达式之后,再来设定几个小scripts 试试看不同的用法,以期得到大家的了解啰!</font></blockquote><ul><li><font color="#000099">逻辑判断式:</font></li><br><font color="#000000">在 scripts 里头很重要的一项工作就是『</font><b><font color="#3333ff">判断是否可行</font></b><font color="#000000">』的目标!举个例子来说,当我们要建立一个目录的时候,先侦测有没有该目录,如果有的话,那么就不需要建立,如果没有的话,那么就建立该目录!这个就需要script 来主动的判断了!那么如何判断呢?基本上由于是判断式,那么应该都会与『条件』有关的,所以底下的判断式大多与『<font face="SimSun">if... then... fi </font>』这一种条件判断式有关系!这部份后面再提,这里先提一下逻辑判断式的几个重要的咚咚:</font><br>&#160;<table border="1" cols="2" width="700"><tbody><tr><td bgcolor="#ffcccc" width="100"><center>逻辑卷标</center></td><td bgcolor="#cccccc" width="600"><center>表示意思</center></td></tr><tr><td>1.</td><td><font color="#000099">关于档案与目录的侦测逻辑卷标!</font></td></tr><tr><td><center><font face="SimSun">-f</font></center></td><td><center><font color="#3333ff" face="SimSun">常用!侦测『档案』是否存在</font></center></td></tr><tr><td><center>-d</center></td><td><center><font color="#3333ff">常用!侦测『目录』是否存在</font></center></td></tr><tr><td><center><font face="SimSun">-b</font></center></td><td><center><font face="SimSun">侦测是否为一个『<font color="#3333ff"> block档案</font>』</font></center></td></tr><tr><td><center><font face="SimSun">-c</font></center></td><td><center><font face="SimSun">侦测是否为一个『<font color="#3333ff"> character档案</font>』</font></center></td></tr><tr><td><center>-S</center></td><td><center>侦测是否为一个『<font color="#3333ff"> socket 标签档案</font>』</center></td></tr><tr><td><center>&#160;-L</center></td><td><center>侦测是否为一个『<font color="#3333ff"> symbolic link 的档案</font>』</center></td></tr><tr><td><center>&#160;-e</center></td><td><center>侦测『<font color="#3333ff">某个东西</font>』是否存在!</center></td></tr><tr><td>2.</td><td><font color="#000099">关于程序的逻辑卷标!</font></td></tr><tr><td><center>-G</center></td><td><center>侦测是否由 GID 所执行的程序所拥有</center></td></tr><tr><td><center>-O</center></td><td><center>侦测是否由 UID 所执行的程序所拥有</center></td></tr><tr><td><center>-p</center></td><td><center>侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)</center></td></tr><tr><td>3.&#160;</td><td><font color="#000099">关于档案的属性侦测!</font></td></tr><tr><td><center>-r</center></td><td><center>侦测是否为<font color="#3333ff">可读</font>的属性</center></td></tr><tr><td><center>-w</center></td><td><center>侦测是否为<font color="#3333ff">可以写入</font>的属性</center></td></tr>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?