"维护变量" :Shell能够维护一些变量。变量中存放一些数据供以后使用。用户能够用"="给变量赋值,如:
$lookup=/usr/mydir
该命令建立一个名为lookup的变量并给其赋值/usr/mydir,以后用户能够在命令行中使用lookup来代替/usr/mydir,例如:
$echo $lookup
结果显示:/usr/mydir
为了使变量能被子进程使用,可用exprot命令,例如:
$lookup=/usr/mydir
$export lookup
"运行环境控制" :当用户登陆启动shell后,shell要为用户创建一个工作的环境,如下:
1>当login程式激活用户shell后,将为用户建立环境变量。从/etc/profile和.profile文档中读出,在这些文档中一般都用$TERM 变量配置终端类型,用$PATH变量配置Shell寻找可执行文档的路径。
2>从/etc/passwd文档或命令行启动shell时,用户能够给shell程式指定一些参数,例如"-x",能够在命令执行前显示该命令及其参数。后面周详介绍这些参数。
"shell编程" :本文主要介绍的内容。
shell本身也是一种语言(*能够先理解为unix命令的组合,加上类C的条件,循环等程式控制语句,类似dos批处理,但要强大的多),用户能够 通过shell编程(脚本,文本文档),完成特定的工作。
SHELL变量
下面我们周详的介绍Bourne Shell的编程:
自从贝尔实验室设计了Bourne Shell。从那时起许多厂商根据不同的硬件平台设计了许多版本得unix。但在众多版本的unix中,Bourne Shell 一直保持一致。
1>Bsh的启动:用户在登陆后,系统根据文档/etc/passwd中有关该用户的信息项启动Shell。例如某用户在passwd中 的信息项为:
ice_walk:!:411:103:Imsnow ,ice_walk:/home/ice_walk:/bin/bsh
则表明,用户名是ice_walk等信息,在最后一项"/bin/bsh"表明用户的sh环境类型是bsh,于是系统启动之。在启动或执行(包括下面我们要讲 的shell程式--脚本)过程中能够使用以下一些参数,我们一一说明:
-a 将任何变量输出
-c "string"从string中读取命令
-e 使用非交互式模式
-f 禁止shell文档名产生
-h 定义
-i 交互式模式
-k 为命令的执行配置选项
-n 读取命令但不执行
-r 受限模式
-s 命令从标准输入读取
-t 执行一命令,然后退出shell
-u 在替换时,使用未配置的变量将会出错
-v 显示shell的输入行
-x 跟踪模式,显示执行的命令
许多模式能够组合起来用,您能够试试了,但-ei好象不行,您说why呢?
使用set能够配置或取消shell的选项来改变shell环境。打开选项用"-",关闭选项用" ",多数unix允许打开或关闭a、f、e、h、k、n、 u、v和x选项。若显示Shell中已配置的选项,执行:
$echo $-
Bsh中每个用户的home目录下都有一个.profile文档,能够修改该文档来修改shell环境。为了增加一个可执行文档的路径(例如/ice_walk/bin), 能够把下面代码加入.profile中
PATH=$PATH:/ice_walk/bin;exprot PATH
.profile中shell的环境变量意思如下:
CDPATH 执行cd命令时使用的搜索路径
HOME 用户的home目录
IFS 内部的域分割符,一般为空格符、制表符、或换行符
MAIL 指定特定文档(信箱)的路径,有UNIX邮件系统使用
PATH 寻找命令的搜索路径(同dos的config.sys的 path)
PS1 主命令提示符,默认是"$"
PS2 从命令提示符,默认是">"
TERM 使用终端类型
2>Bsh里特别字符及其含义
在Bsh中有一组非字母字符。这些字符的用途分为四类:作为特别变量名、产生文档名、数据或程式控制连同引用和逃逸字符控制。他们 能够让用户在Shell中使用最少的代码完成复杂的任务。
*> Shell变量名使用的特别字符
$# 传送给命令Shell的参数序号
$- 在Shell启动或使用set命令时提供选项
$? 上一条命令执行后返回的值
$$ 当前shell的进程号
$! 上一个子进程的进程号
$@ 任何的参数,每个都用双括号括起
$* 任何参数,用双括号括起
$n 位置参数值,n表示位置
$0 当前shell名
*>产生文档名的特别字符
包括"*","?","[]",上面讲过,不再多说。
*>数据或程式控制使用的特别字符
>(file) 输出重定向到文档中(没有文档则创建,有则覆盖)
>>(file) 输出重定向到文档中(没有则创建,有则追加到文档尾部)
<(file) 输入重定向到文档
; 命令分割符
| 管道符
& 后台运行(例如:sleep 10 &)
` ` 命令替换,重定向一条命令的输出作为另一命令的参数
*>对于引用或逃逸的特别字符
Bsh用单引号' '和双引号" "将特别字符或由空白分隔的字引用起来组成一个简单的数据串.使用单引号和双引号的区别是双引号中的内容可进行参数和变量替换.逃逸字符也相同.
$echo "$HOME $PATH"
结果显示$/u/ice_walk/bin:/etc:/usr/bin
而$echo '$HOME $PATH' 结果显示$HOME $PATH
shell的逃逸符是个"\",表示其后的字符不具备特别的含义或不是shell的函数
$echo \$HOME $PATH
结果显$$HOME /bin:/etc:/usr/bin:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




