|
2#
楼主 |
发表于 28.11.2002 11:59:35
|
只看该作者
<br>1.11 Bash 命令行与脚本<br><br><br>Bash 介绍 <br><br>重要的命令行机制 (I/O 重定向, 管道, ...) <br><br>Bash 脚本介绍 <br><br>变量 <br><br>控制结构 <br><br>范例 <br><br>1.11.1 Bash 介绍<br>bash(Bourne Again SHell)是自由软件基金会发布的 Bourne Shell 的兼容程序。它包含了许多其他优秀 s hell 的良好特性,功能十分全面。很多 Linux 版本都提供 bash。 <br><br>1.11.2 重要的命令行机制<br>变量<br>命令补全<br>特殊字符:" '<br>别名<br>重定向<br>管道<br>历史表<br>命令行编辑<br>1.11.3 Bash 脚本介绍<br>#TODO#<br><br>1.11.4 变量<br>环境变量<br><br>自定义变量<br><br>特殊变量:$0, $1, $2, $*, $#, $$, $!, $?<br><br>特殊字符:"", '', ``, {}, (), []<br><br>1.11.5 控制结构<br>if<br><br>test<br><br>while<br><br>until<br><br>for<br><br>case<br><br> 在 Bash 脚本中,控制结构(例如 if、case、for 和 while)要依靠一条命令的出口状态来决定<br>下一步做什么。当一个命令执行时,它返回一个出口状态:表示该命令是否成功的一个数字。通常,<br>出口状态值是 0 就表示命令执行成功。一个非零的出口状态值表示<br>该命令出现故障了。<br> 现在用户可以设计这样一个脚本,它的功能是在使用 vi 编辑器打开一个文件之前,对这个文件做一个备<br>份。具体的形式如下:<br>-----------------------------------<br> #!/bin/sh<br> if cp "$1" "#$1"<br> then<br> vi "$1"<br> else<br> echo "Failed to create backup copy"<br> fi<br>-----------------------------------<br> 这个脚本说明了 if-then-else 结构的语法,也显示了 cp 命令的出口状态值是如何被 if 结构用来<br>决定下一步操作。假如 cp 的返回值是 0,脚本将调用 vi 编辑这个文件;否则,脚本将显示故障信息,<br>然后退出。<br> 不要忘记结束符 fi,它的作用是结束 if 结构。忘记使用 fi 是 Bash 脚本中常见的错误之一。<br> Bash 包含了 test 命令,它可以允许用户计算表达式的值,并使用表达式的值作为命令的出口状态值。<br>假设用户想要建立一个能够编辑现有文件的脚本。使用 test,可以按照如下的方式编写这个脚本:<br>-----------------------------------<br> #!/bin/sh<br> if test -f "$1"<br> then<br> vi "$1"<br> else<br> echo "No such file"<br> fi<br>-----------------------------------<br> test 命令的一个更简短的格式是将 test 去掉,只在一个方括号内留下命令选项。使用这种方式,<br>可以将上面这个脚本写成如下形式:<br>-----------------------------------<br> #!/bin/sh<br> if [ -f "$1" ]<br> then<br> vi "$1"<br> else<br> echo "No such file"<br> fi<br>-----------------------------------<br> 左方括号([)其实是一个指向 /usr/bin/test 的符号链接。用户可以通过输入 ls -l /usr/bin/[ 来验<br>证这个链接。<br> 另一个使用广泛的控制结构是 for 循环。下面的脚本功能是分别将 1 到 10 累加成一个数:<br>-----------------------------------<br> #!/bin/sh<br> sum=0<br> for i in 1 2 3 4 5 6 7 8 9 10<br> do<br> sum='expr $sum + $i'<br> done<br> echo "Sum = $sum"<br>-----------------------------------<br> 这个例子也说明了如何使用 expr 命令来计算一个表达式的值。<br>1.11.6 范例<br>#DEMO#<br> |
|