软件测试技术

当前位置:首页 > 软件测试技术

Bourne Shell及shell编程

Bourne Shell 及 shell 编程

介绍 Bourne Shell 基础及其他很多有用的特性shell编程及组织

 

主要内容

.shell 基础、基本介绍、环境选项、特殊字符

.shell 变量、用户定义变量、环境变量、位置变量(shell 参数)

.shell script 编程

 条件测试、循环及重复控制

.shell定制

 

1.shell 基础知识

 作者 Stephen Bourne 在Bell实验室开发,建议 mansh查看相关UNIX上的改进或特性

 (1)shell 提示符及其环境

 /etc/passwd 文件

 提示符 $

 /etc/profile $HOME/.profile

(2)shell 执行选项

 -n 测试 shell script 语法结构 只读取 shell script 但不执行

 -x 进入跟踪方式 显示所执行的每一条命令 用于调度

 -a Tag all variables for export

 -c "string" 从 strings 中读取命令

 -e 非交互方式

 -f 关闭 shell 文件名产生功能

1

 -h locate and remember functions as defind

 -i 交互方式

 -k 从环境变量中读取命令的参数

 -r 限制方式

 -s 从标准输入读取命令

 -t 执行命令后退出(shell exits)

 -u 在替换中如使用未定义变量为错误

 -v verbose,显示 shell 输入行

 

这些选项可以联合使用 但有些显然相互冲突 如-e和-i.

 

(3)受限制 shell(Restircted Shell)

 sh -r 或 /bin/rsh

不能执行如下操作 cd, 更改 PATH,指定全路径名,输出重定向,因此可以提供一个较好的控制和安全机制通常 rsh用于应用型用户及拨号用户,这些用户通常是看不到提示符的,通常受限制用户的主目录是不可写的不足。如果用户可以调用 sh,则 rsh的限制将不在起作用,事实上如果用户在 vi及more程序中调用 shell,而这时rsh的限制将不再起作用。

 

(4)用 set 改变 shell 选项

用户可以在$提示符下用 set 命令来设置或取消 shell 的选项,使用-设置选项 +取消相应选项,大多数 UNIX 系统允许 a,e,f,h,k,n,u,v 和 x 的开关设置/取消set -xv启动跟踪方式;显示所有的命令及替换 同样显示输入set -tu,关闭在替换时对未定义变量的检查。使用 echo $-显示所有已设置的 shell 选项。

 

(5)用户启动文件 .profile

 PATH=$PATH:/usr/loacl/bin; export PATH

 

(6)shell 环境变量

 CDPATH 用于 cd 命令的查找路径

 HOME /etc/passwd 文件中列出的用户主目录

 IFS Internal Field Separator,默认为空格 tab 及换行符

2

 MAIL /var/mail/$USERNAME mail 等程序使用

 PATH

 PS1 PS2 默认提示符($)及换行提示符(> )

 TERM 终端类型 常用的有 vt100,ansi,vt200,xterm 等

 

 示例 $PS1="test:";export PS1

 test: PS1="\$";export PS1

 $echo $MAIL

 /var/mail/username

(7)保留字符及其含义

 $ shell 变量名的开始 如$var

 | 管道 将标准输出转到下一个命令的标准输入

 # 注释开始

 & 在后台执行一个进程

 匹配一个字符

 * 匹配 0 到多个字符(与 DOS 不同 可在文件名中间使用 并且含.)

 $- 使用 set 及执行时传递给 shell 的标志位

 $! 最后一个子进程的进程号

 $# 传递给 shell script 的参数个数

 $* 传递给 shell script 的参数

 $@ 所有参数 个别的用双引号括起来

 $? 上一个命令的返回代码

 $0 当前 shell 的名字

 $n (n:1-) 位置参数

 $$ 进程标识号(Process Identifier Number, PID)

 >file 输出重定向

 <file 输入重定向

 `command` 命令替换 如 filename=`basename /usr/local/bin/t

csh`

 >>fiile 输出重定向 append

 

 转义符及单引号

 $echo "$HOME $PATH"

 /home/hbwork /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6

/bin:

 $echo '$HOME $PATH'

 $HOME $PATH

 $echo \$HOME $PATH

 $HOME /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/h

ome/hbw

ork/bin

 

 其他

 $dir=ls

3

 $$dir

 $alias dir ls

 $dir

 

 ls > filelist

 ls >> filelist

 wc -l < filelist

 wc -l filelist

 sleep 5; echo 5 seconds reaches; ls -l

 ps ax |egrep inetd

 find / -name core -exec rm {} \; &

 filename=`date "+%Y%m%d"`.log


文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~