繁体   English   中英

创建路径的逗号分隔列表(允许路径中留有空格),并将结果作为变量传递以再次使用

[英]Creating comma-separated list of paths (allowing for spaces in path), and passing result as a variable to use again

我正在尝试使用rtcontrol( Pyroscope的一部分 )的输出,该输出用于从命令行控制rtorrent t。 我在格式化一个调用的输出以用作另一输入的输入时遇到问题

我希望只能选择满足该条件的种子,但不要与其他种子共享路径。

过程如下

PATHS=$(rtcontrol ratio=+2 completed=+5d -qopath)

echo $PATHS
# Output
# /home/user/path/name1
# /home/user/path/name2
# /home/user/path/name 3
# /home/user/path/name 3
# /home/user/path/name 4
# /home/user/path/name5

# Remove duplicates paths and convert $PATHS to comma delimited variable PATHS.
#
# UNSURE HERE....
#
# PATHS="/home/user/path/name1","/home/user/path/name2","/home/user/path/name 3","/home/user/path/name 4","/home/user/path/name5"

#Pass PATHS to rtcontrol again to get torrents in one of the paths.
PATHS_2=$(rtcontrol path=$PATHS -qopath)

echo $PATHS_2
#output
#/home/user/path/name1
#/home/user/path/name1
#/home/user/path/name2
#/home/user/path/name 3
#/home/user/path/name 3
#/home/user/path/name 4
#/home/user/path/name5

# Remove duplicates and convert $PATHS_2 to comma delimited variable.
#
# UNSURE HERE....
#
# PATHS_2="/home/user/path/name2","/home/user/path/name 3","/home/user/path/name 4","/home/user/path/name5"

#Pass to rtcontrol to perform action
rtcontrol path=$PATHS_2 --cull

这样做的原因是,洪流有可能不满足条件或ratio=+2 completed=+5d ,但路径却与之相同。 这是第二次调用rtcontrol path=$PATHS -qopath

我尝试了uniq, sed and awk不同组合,以及使用管道传递输出。 应当注意, rtcontrol输出可以通过管道输出,例如rtcontrol name="*Test* -qoname|uniq -u

这可以用纯bash或Python处理。 还有一些与torrent程序接口的python库,它们可以执行相似的功能,甚至是我正在研究的更高级的东西。

 #!/bin/python
 import os
 import sys

 paths = {}
 for line in sys.stdin:
   path = line.strip()
   paths[path] = path
 print ','.join( sorted( paths.keys() )
 exit( 0 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM