我是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视为文件名而不是表达式。关于为什么以及如何解决这个问题的任何建议?
谢谢,
彼得
答案 0 :(得分:1)
[[
之后缺少空格:
if [[ $i -eq 48 ]]; then
# ...^
这是因为[[
实际上是一个命令而不仅仅是语法,并且像任何其他命令一样,需要一个空格来将命令与参数分开。