2
我确信有一个简单的方法可以做到这一点,但我没有找到它。我想要做的是使用lftp执行一系列命令,并且我想避免在可能的情况下反复连接到服务器。使用lftp执行动态命令 - 多个命令
基本上,我有一个文件,其中包含一个完整的ftp目录在服务器上的列表。我想连接到服务器,然后执行类似如下:(假设在这一点上,我已经转换的文本文件导入使用cat线的阵列)
for f in "${myarray}"
do
cd $f;
nlist >> $f.txt;
cd ..;
done
当然,这并不工作,但我不得不想像我有一个简单的解决方案,我正在努力完成。
对于shell脚本,我很缺乏经验。有什么建议么?
谢谢。这正是我需要的。由于我(我没有提到这一点)在一个窗口框中工作,所以有一些增加了行结尾的复杂性--->我认为可能是错误的只有两件事是关于你所说的(尽管这可能是因为的窗户)。我简直无法让它与名称中有空格的目录一起工作 - 这在运行时不会成为问题,但它让我在测试中感到困惑。另外,我必须在=符号后面加双引号 - 它表示list_commands = $ list_commands才能使其工作。绝对让我在需要的地方。谢谢! – user1167442
@ user1167442缺少双引号是错误的,修正了。如果您使用IFS = $'\ r'而不是'IFS =',则输入文件可以具有Windows行结束符。有空间的目录应该工作(我想,我还没有测试过),出了什么问题? – Gilles
我尝试了多个变体的转义和绕过变量的双引号,如下所示:cd \“$ dir \”,但是在服务器和输出中都发生了什么,它只将它读作请求的第一部分 - 例如cd“Folder D”被解释为cd“Folder”“D”,并且输出将在文件“Folder.txt”和“D.txt”中。不过,我并不太担心它,因为在运行时,它只能使用预先转义的大写非空格字符串。虽然奇怪。我用tr -d“\ r”很容易地处理了windows \ r问题。非常便利。 – user1167442