Shell脚本测试总结

发表于:2012-10-12 10:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  4)变量传播

  【脚本内容】:

  func(){

  for((i=0;i<$RETRY_TIMES;i++))

  do

  NOTICE “delBlacklist”

  done

  }

  for (( i=0; i<pggroup_size; i++))

  do

  func()

  done

  【问题】:“i”的值自增之后会传递到外层调用脚本,导致外层调用脚本的循环跳过或死循环

  【解决】避免使用i,j,k等常见的循环控制变量,使用自定义的变量名,如retry_count等

  在shell函数中定义的变量加上local关键字

  5)命令连接

  问题一:

  【脚本内容】:

  cd to_del; rm -rf *

  【问题】:如果cd 目录失败,rm -rf * 会错误地删除当前目录下的所有文件

  【解决】使用 && 连接   cd失败将不会继续执行后面的命令

  问题二:

  【脚本内容】:

  for data in ${datalist{@}}

  do

  runRemoteCmd ${host} “cd ${data_path}.new && [[ -f ${data_flag} ]]” || suc=0 && break

  done

  【问题】:这里的 || && 是同一个优先级

  那么就是说 && 后面的语句 break无论什么情况下都不可能被执行到

  【解决】拆成两条语句,单独判断suc

  6)文件泄露

  【脚本内容】:

  local status=$( mySsh ${remote_host} “{ ${command%%;}; }&>/tmp/$$ && echo 0 || echo 1″ )

  【问题】:上述代码将远程执行命令行的输出结果导入到一个以pid命名的临时文件中,在脚本关闭的时候没有清除,每一次执行将创建一个新文件,很可能导致文件泄露问题。

  【解决】注意清理脚本生成的临时文件

54/5<12345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号