gpt4 book ai didi

bash - 使用 lftp 执行动态命令 - 多个命令

转载 作者:行者123 更新时间:2023-11-29 09:22:06 27 4
gpt4 key购买 nike

我确信有一个简单的方法可以做到这一点,但我没有找到它。我想做的是使用 lftp 执行一系列命令,我想尽可能避免重复连接到服务器。

基本上,我在服务器上有一个包含完整 ftp 目录列表的文件。我想连接到服务器然后执行类似以下的操作:(假设此时我已经使用 cat 将文本文件转换为行数组)

for f in "${myarray}"
do
cd $f;
nlist >> $f.txt;
cd ..;
done

当然这行不通,但我必须想象有一个简单的解决方案可以解决我想要完成的任务。

我在 shell 脚本方面缺乏经验。有什么建议吗?

最佳答案

首先构建一个包含 lftp 命令列表的字符串。然后调用 lftp,在其标准输入上传递命令。 Lftp 本身可以使用类似于 shell 的语法将命令的输出重定向到文件。

list_commands=""
for dir in "${myarray[@]}"; do
list_commands="$list_commands
cd \"$dir\"
nlist >\"$dir.txt\"
cd .."
done

lftp <<EOF
open -u $username,$password $site
$list_commands
bye
EOF

请注意,我假设目录名称不包含反斜杠、单引号或通配符。如有必要,添加适当的转义。

顺便说一下,要从文件中读取行,请参阅 Why is while IFS= read used so often, instead of IFS=; while read..? .您可能更喜欢将读取目录列表和构建命令结合起来:

list_commands=""
while IFS= read -r dir; do
list_commands="$list_commands
cd \"$dir\"
nlist >\"$dir.txt\"
cd .."
done <directory_list.txt

关于bash - 使用 lftp 执行动态命令 - 多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12201813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com