在shell中循环遍历数组时出错

时间:2015-05-19 13:13:03

标签: arrays shell unix ftp

我已经编写了一个脚本来ftp我的目录中的一组文件,但是我在尝试循环遍历数组时遇到错误。

#!/usr/bin/ksh
HOST='xxx.xxx.xxx.xxx'   
USER='avio'    
PASSWD='jun'    
FILES[0]=D141203.T024413
FILES[1]=D150101.T012755
FILES[2]=D141203.T024418
echo 'no of files: ' ${#FILES[@]}
ftp -n -v $HOST << EOS
ascii
user $USER $PASSWD
for i in "${FILES[@]}" 
do 
get $i
done
bye
EOS

这是我的o / p:

no of files: 3
ftp.sh[10]: i: 0403-009 The specified number is not valid for this command.

1 个答案:

答案 0 :(得分:4)

for循环不作为bash命令执行;相反,它作为字符串传递给ftp命令。而是使用管道将命令的输出提供给ftp

#!/usr/bin/ksh
HOST='xxx.xxx.xxx.xxx'   
USER='avio'    
PASSWD='jun'    
FILES[0]=D141203.T024413
FILES[1]=D150101.T012755
FILES[2]=D141203.T024418
echo 'no of files: ' ${#FILES[@]}
{ echo "ascii"
  echo "user $USER $PASSWD"
  for i in "${FILES[@]}";  do 
     echo "get $i"
  done
  echo "bye"
} | ftp -n -v $HOST