SHELL test [命令用法(五)

时间:2023-01-30 22:38:03
 出于检查的目的将数量限制为三个变量的原因是减少在例子中要检查的行数。一切都按部就班地进行,虽然它令人难以置信地混乱;用户因使用了超过程序依设计所能处理的变量数而得到警告,且脚本退出。如果变量数为 3 或更少,则运算的核心部分开始执行。

  回显变量,执行测试以查看另一个变量是否存在。如果另一个变量存在,则执行一次转移,回显该变量,执行另一测试,等等。总共使用了 16 个有效行,而程序仅能处理不超过三个变量 — 非常混乱。假设消除变量数的限制,程序可以处理任意数量的变量。经过一些修改,脚本被缩短(美化)了,并能处理任意数量的变量:

  #example12 - display declining variables, any number

  while [ "$#" -gt 0 ]

  do

  echo $*

  shift

  done

  $ example12 1 2 3 4 5 6 7 8 9 0

  1 2 3 4 5 6 7 8 9 0

  2 3 4 5 6 7 8 9 0

  3 4 5 6 7 8 9 0

  4 5 6 7 8 9 0

  5 6 7 8 9 0

  6 7 8 9 0

  7 8 9 0

  8 9 0

  9 0

  0

  现在减少到只有 5 个有效行,且消除了第一个脚本三个变量的限制,并在运行时要更高效。

  示例 2:无论何时当在脚本内执行与处理相关的操作时,下一个操作将始终检查上一操作的状态,以确认它已成功完成。您可以通过检查 $? 的状态并验证它等于 0 来实现这一目的。例如,如果一个数据目录是否能访问非常重要,

  #example13

  TEMP=LST

  cd $TEMP

  if [ $?-ne 0 ]

  then

  echo "Data directory could not be found."

  Exit

  fi

  处理错误

  资源

  下载针对 Linux 的 Oracle 数据库 10g

  Oracle 数据库 10g 第 1 版 (10.1.0.2) 现在可用于 Linux x86 和 Linux Itanium 平台;请在此从 OTN 上免费下载。

  访问 Linux 技术中心

  收藏本页,以获取关于 Linux 系统管理员最佳应用的一般技术信息,以及关于 Oracle-on-Linux 产品群的具体技术信息。

  相关文章

  Linux 相关技术文章的存档

  test 命令常常出现的错误事实上只有两种类型。第一种是未使用正确的评估类型,例如将字符串变量与整型变量进行比较或者将带填充的字符串与不带填充的字符串进行比较。仔细评估您使用的变量将使您最终找到错误的根源,并让您能够解决这些问题。

  第二种错误类型包括将方括号误认为别名之外的某个东西。方括号与其内容之间必须有一个空格;否则,它们将不能解释其中的对象。例如,

  $ [ "$LOGNAME" -gt 9]

  test:] missing

  $

  请注意,错误消息指示 test 存在问题,即使使用了别名 ]。这些问题很容易发现,因为错误消息准确地将这些问题显示出来,然后您可以增加必要的空格。

  结论

  要在 shell 脚本中构建逻辑,您必须添加条件语句。每一条这种语句的核心都是对条件的评估,以判断它是否存在 — 通过使用 test 命令完成评估。了解它和它的别名(左方括号 ([)的工作原理将使您能够撰写可以完成一些复杂操作的 shell 脚本。