• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

介绍几个shell程序设计小知识之三

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 21次 | 进入软件测试论坛讨论

领测软件测试网
今天介绍条件测试语句

一、if 条件语句 
格式:
if 条件表达式
then #当条件为真时执行以下语句
命令列表  
else #为假时执行以下语句
命令列表
fi

if 语句也可以嵌套使用

if 条件表达式1
then
if 条件表达式2
then
     命令列表
else
if 条件表达式3
then
命令列表
else
命令列表
fi
fi
else
命令列表
fi

你可以进行多层嵌套 一个if语句一定要跟一个fi 表示该层条件结束  否则会造成语法错误
结合前面讲的 举例如下:
这里先讲一个条件语句中用到的命令test 表示测试test后面的条件是否为真

if test -f "$1"
then
lpr $1
else
if test -d "$1"
then
cd $1
lpr $1
else
echo "$1不是文件或目录"
fi
fi

以上的例子还可以改成如下所示

if test -f "$1"
then
lpr $1
elif test -d "$1" #elif 同else if
then
(cd $1;lpr $1)
else
echo "$1不是文件或目录"
fi

以上的例子不知您是否看懂是什么意思吗?
假如我们现在将这个例子保存为prfile
chmod +x prfile
执行刚才的程序
./prfile aaa

这个例子是检查你的输入的参数是否是一个文件 如果是就打印 如果是一个目录 先转目录再打印 如果即不是文件也不是目录给出提示

二、多重条件测试语句case
格式:
case 字串 in
模式) 命令列表;;
模式) 命令列表;;
....
esac

多重条件语句是以case 开始以esac结束 中间可以有多个条件列表 功能是测试字串和和里面的模式有没有匹配的,有就执行里面的命令列表 模式也可以是*号 表示任意字串,每个模式里面的最后要心;;双引号结束,否则会发生语法错误。

现举例如下:

case $1 in
  *.c)
    cc $1
;;
  *.txt)
    lpr $1
;;
  *)
    echo "未知的类型"
esac

假如将以上内容保存在文件abc中

chmod +x abc
执行 ./abc a.c   将会对文件a.c进行编译
执行  ./abc readme.txt 将会把文件通过打印机
假如我将以上内容改一下,你是否会知道它的执行结果?

case $1 in
  *)
    cc $1
;;
  *.txt)
    lpr $1
;;
  *.c)
    echo "未知的类型"
esac

今天就这么多吧 时间太晚了
明天接着 待续
如果大家觉得没有必要时 我会停止的

 sindney 回复于:2004-05-17 08:11:43
期待楼主继续:)

 绣林 回复于:2004-05-17 08:16:25
继续辛苦,我们会支持你的。

 beilycao 回复于:2004-05-17 08:19:45
谢谢楼主了,对我大有用处。

 johnsilver 回复于:2004-05-17 08:55:21
能否介绍一下在shell中操纵数据库的注意事项,很少有这方面的介绍。

 sdccf 回复于:2004-05-17 08:57:04
shell本身是不能操作数据库的,它也是调用数据库的一些命令。

 jackieyuan 回复于:2004-05-17 11:59:57
支持你!!!

 yoursmile 回复于:2004-05-17 18:48:57
学习.

 hsgzr 回复于:2004-05-17 20:45:15
shell是不能存取数据库的 要想操作数据库也是在shell中用数据库管理工具存取

 johnsilver 回复于:2004-05-18 08:11:09
请看我以前发的一篇文章:
http://bbs.chinaunix.net/forum/viewtopic.php?t=122612&highlight=johnsilver
在编写与数据库有关的shell时是非常容易出问题的,有什么问题解决了,却不知为什么,迷惘..........

 secson 回复于:2004-05-18 15:46:00
支持楼主!

 我刚接触UINX 回复于:2004-05-18 15:49:23
支持楼主,收藏了。再接再厉!!

 hsgzr 回复于:2004-05-18 19:10:28
数据库在shell中调用
dbaccess 数据库名 --<<!
sql语句
!

 qym 回复于:2004-05-19 22:19:58
if 语句也可以嵌套使用 .若这样不知行不行?

if 条件表达式1 
then 
命令语句(调用数据库)
             if 条件表达式2 
               then  
               命令列表
          else 
          命令列表
          fi
else 
   命令语句(调用数据库)
                  if 条件表达式3 
                     then 
                  命令列表 
                 else 
                   命令列表 
              fi 
fi 

 
我怎么老报错?

 七月天*珂 回复于:2004-05-20 08:25:54
多谢了!

 sysgxb 回复于:2004-05-20 10:18:54
鼓励支持

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网