ksh脚本中出现意外的条件错误

时间:2014-09-29 12:39:07

标签: ksh

我是ksh编程的新手,并想知道为什么以下代码不起作用:

#!/bin/ksh
set -A tables 44 45 46 47 48 49 50

for i in ${tables[@]}
  do
  if [[$i -eq 48 ]]; then
  echo "processing table${i}_Ge65"
  echo "processing table${i}_Lt65"
  fi
  echo "processing table${i}_A"
  echo "processing table${i}_B"
done

错误信息是

[[44: not found [No such file or directory]

表示数组中的每个数字。在我看来,ksh将$ i视为文件名而不是表达式。关于为什么以及如何解决这个问题的任何建议?

谢谢,

彼得

1 个答案:

答案 0 :(得分:1)

[[之后缺少空格:

if [[ $i -eq 48 ]]; then
# ...^

这是因为[[实际上是一个命令而不仅仅是语法,并且像任何其他命令一样,需要一个空格来将命令与参数分开。