Bash Shell 入门指导手册

Bash Shell要完整深入的掌握,需要花一定的时间,但是有时候工作需要,需要快速的掌握其基本用法并编写简单的程序来满足项目的需要,那么您就可以看看下面的文章,否则没必要花时间在下面的文字上。

首先要澄清的是,这里不是要对shell 脚本编程作详细的研究,正如本文标题所指出的,这是一篇介绍bashshell 脚本编写语法的快速指南手册。如果你想深入研究,那么建议你买一本关于shell脚本编程的书 ;-) 。好,现在开始我们的学习,开始用停表计时吧!
正文:
常见的环境变量:
$PATH - 为可执行程序设置查找路径,与msdos下的$PATH 变量类似。
$HOME - 用户的本地目录(home).
$MAIL - 保存用户设置的mail投递路径。
保存了一串 在命令行中用于 字符分隔 的字符 组成的字串。这个字串通常包含了空格,制表符,换行符。要查看之,你要做一个octal dump 的操作 如下:

$ echo $IFS | od -bc

PS1 and PS2 - 第一顺序提示符和第二顺序提示符(Primary and secondary prompts). PS1 默认设为 $ , PS2 设置为 '>' . 查看PS2可以通过如下命令:
$ <span style="font-weight: bold;">ls |</span>
然后按回车。

$USER - 用户登陆名。
$TERM - 终端类型标识。有时必须为编辑器设置正确的终端标识,以便其正常工作。
$SHELL - 登陆时可通过此查看shell 的类型.
注意:要查看以上变量的值,只要简单地用 echo 命令 加 $变量名就行了。例如:

$ <span style="font-weight: bold;">echo $USER</span><br>ravi

就得到了$USER 的值。

bash shell 编程规则
1) 编写的脚本首行必须为:
<span style="color: #000099;">#</span><span style="color: #cc0000;">!</span><span style="color: #000099;">/bin/bash</span>
#井号,后跟!叹号,接着是shell的路径。这个语句能够告诉解析器这是一个shell脚本,同时指定shell的路径。
2)执行脚本前,先为脚本赋执行权限:

$ chmod ugo+x your_shell_script.sh

3)把脚本以.sh后缀命名。这让人知道这是一个shell脚本。这不是必须的,但是这是规范,没错,规范。

条件语句
if
if 语句-对条件命令进行判断然后决定流程的执行。
蓝色的字必要的。红色的则是可选的。
语法:

<span style="font-weight: bold; color: #000099;">if</span> condition_is_true<br><span style="font-weight: bold; color: #000099;">then</span><br>execute commands<br><span style="font-weight: bold; color: #000099;">else</span><br>execute commands<br><span style="font-weight: bold; color: #000099;">fi</span>
if 条件可以是多路选择(分支结构)。这样可以对多条件进行判断。
<span style="font-weight: bold; color: #000099;">if</span> condition_is_true<br><span style="font-weight: bold; color: #000099;">then</span><br>execute commands<br><span style="font-weight: bold; color: #000099;">elif</span> another_condition_is_true<br><span style="font-weight: bold; color: #000099;">then</span><br>execute commands<br><span style="font-weight: bold; color: #000099;">else</span><br>execute commands<br><span style="font-weight: bold; color: #000099;">fi</span>
例子:

<span style="font-weight: bold; color: #000099;">if</span> grep "linuxhelp" thisfile.html<br><span style="font-weight: bold; color: #000099;">then</span><br>echo "Found the word in the file"<br><span style="font-weight: bold; color: #000099;">else</span><br>echo "Sorry no luck!"<br><span style="font-weight: bold; color: #000099;">fi</span>

if 的搭档- test命令
test 是shell的一个内置命令。test对右边的操作数进行判断。返回true或false.为此,test 用特定的操作符来作条件判断,如下所示:

关系型操作符
<span style="font-weight: bold; color: #990000;">-eq</span> Equal to等于<br><span style="font-weight: bold; color: #990000;">-lt</span> Less than小于<br><span style="font-weight: bold; color: #990000;">-gt</span> Greater than大于<br><span style="font-weight: bold; color: #990000;">-ge</span> Greater than or equal to大于等于<br><span style="font-weight: bold; color: #990000;">-lt</span> Less than小于<br><span style="font-weight: bold; color: #990000;">-le</span> Less than or equal to 小于等于
文件相关的测试:
<span style="font-weight: bold; color: #990000;">-f file</span> 存在且为常规文件,则为真<br><span style="font-weight: bold; color: #990000;">-r file</span> 文件存在且可读,则为真<br><span style="font-weight: bold; color: #990000;">-w file</span> 文件存在且可写,则为真<br><span style="font-weight: bold; color: #990000;">-x file</span> 文件存在且可执行,则为真<br><span style="font-weight: bold; color: #990000;">-d file</span> 为文件夹,则为真<br><span style="font-weight: bold; color: #990000;">-s file</span> 文件存在且不为零则为真<br>
字符串测试:
<span style="font-weight: bold; color: #990000;">-n str</span> True if string str is not a null string<br><span style="font-weight: bold; color: #990000;">-z str</span> True if string str is a null string<br><span style="font-weight: bold; color: #990000;">str1 <span style="color: #000099;">==</span> str2</span> True if both strings are equal<br><span style="font-weight: bold; color: #990000;">str1 <span style="color: #000099;">!=</span> str2</span> True if both strings are unequal<br><span style="font-weight: bold; color: #990000;">str</span> True if string str is assigned a value<br>and is not null.
上面的意思是:
-n str 如果str非空则为真
-z str 如果str为空则为真
str1 == str2 如果两个字串相等则为真
str1 != str2 如果两个字串不等则为真
str 如果str有赋非空值则为真。

相关推荐