我想从远程服务器获取文件列表并将该列表放置在本地文件或数组中。遍历文件列表并从远程到本地一次获取每个文件。 但是,ls命令不能在远程服务器上运行,get命令不起作用。 下面是我的脚本:ls不工作在sftp korn外壳和命令不工作在循环内
#!/user/bin/ksh
Sftp [email protected] <<EOF
Cd source_path
Set -A list_value $(ls source_path)
for file in ${list_value[*]}
do
get /source_path/$file /dest_folder
If ($? -eq 0); then
rm /source_path/$file
else
echo "error"
Exit
fi
done
Bye
EOF
我甚至尝试
ls source_path > output.txt
没有什么工作。在本地它使用数组,但for循环内的命令没有得到执行。在遥控器上没有工作。我甚至用echo *尝试并找到。它在ls附近抛出无效命令错误并得到。
用四个空格前缀代码/数据。请看[编辑帮助](http://stackoverflow.com/editing-help)。 – Cyrus
'sftp'有一个有限的命令集,我很确定它不包含'set','for/do/done','if/then/else/fi';是不是有一个原因,你不只是把一整套文件放在一个过程中,也就是说,为什么要存储在一个数组中,然后遍历数组呢? – markp
是的,我需要在文件成功传输到本地文件夹后删除远程服务器中的文件。这就是原因,我试图一次拉出每个文件,而不是全部拉在一起。 – Kks