Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4524073
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: Python/Ruby

2011-11-03 21:04:06

下面测试文件拷贝是否正常,如果cp命令并没有拷贝文件myfile到myfile.bak,则打印错误信息。注意错误信息中 'basename $0'则打印脚本名

        如果脚本错误退出,一个好习惯是现实脚本名并将之定向到标准错误中。用户应该知道产生错误的脚本名。
 
  1. #!/bin/bash
  2. #ifcp.sh
  3. if cp myfile myfile.bak
  4. then
  5.         echo "good copy"
  6. else
  7.         echo "'basename $0':error could not copy the files" >&2
  8. fi
  1. ywx@ywx:~/Desktop/linux_shell$ ./ifcp.sh
  2. cp: cannot stat `myfile': No such file or directory   系统提示错误
  3. 'basename ./ifcp.sh':error could not copy the files    自己输出打印信息

注意,文件可能没有找到,系统也产生本身的错误信息,这类错误信息可能与输出混在一起,既然已经现实系统错误信息获知脚本失败,就没必要现实两次。要出去系统产生的错误
和系统输出,只需简单的将标准错误和输出重定向即可。修改脚本为: >/dev/null 2 >&1

  1. #!/bin/bash
  2. #ifcp.sh
  3. if cp myfile myfile.bak >/dev/null 2>&1
  4. then
  5.         echo "good copy"
  6. else
  7.         echo "'basename $0':error could not copy the files" >&2
  8. fi

  1. ywx@ywx:~/Desktop/linux_shell$ ./ifcp.sh
  2. 'basename ./ifcp.sh':error could not copy the files
脚本运行时,所有输出包括错误重定向至系统垃圾堆










阅读(1414) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~