去除腐败的种子

时间:2014-08-21 15:24:06

标签: bash debian

我不记得我发现它的位置,但我有一个脚本,一旦种子完成播种就会将种子从传播中移除。

我想添加一个也删除腐败种子的部分。腐败的洪流将有以下几行:

错误:找不到数据!确保您的驱动器已连接或使用"设置位置"。要重新下载,请删除torrent并重新添加。

这是我的剧本:

#!/bin/sh

#transmission-remote --auth=user:pass --torrent 1 --info
#transmission-remote --auth=user:pass --list

TRUSER='user'
TRPASS='pass'
TORRENTLIST=`transmission-remote --auth=$TRUSER:$TRPASS --list | sed -e '1d;$d;s/^ *//' | cut --only-delimited --delimiter=' ' --fields=1`


for TORRENTID in $TORRENTLIST
do
echo "* * * * * Operations on torrent ID $TORRENTID starting. * * * * *"
DL_COMPLETED=`transmission-remote --auth=$TRUSER:$TRPASS --torrent $TORRENTID --info | grep "State: Finished"`
if [ "$DL_COMPLETED" != "" ]; then
echo "Torrent #$TORRENTID is completed."
echo "Removing torrent from list."
transmission-remote --auth=$TRUSER:$TRPASS --torrent $TORRENTID --remove-and-delete
else
echo "Torrent #$TORRENTID is not completed. Ignoring."
fi
echo "* * * * * Operations on torrent ID $TORRENTID completed. * * * * *"
done


for TORRENTID in $TORRENTLIST
do
echo "* * * * * Operations on torrent ID $TORRENTID starting. * * * * *"
DL_STOPPED='transmission-remote --auth=$TRUSER:$TRPASS --torrent $TORRENTID --info | grep -o "Error: No data found"'
if [ "$DL_STOPPED" = !"" ]; then
echo "Torrent #$TORRENTID is corrupted."
echo "Removing torrent from list."
transmission-remote --auth=$TRUSER:$TRPASS --torrent $TORRENTID --remove-and-delete
else
echo "Torrent #$TORRENTID is not corrupted. Ignoring."
fi
echo "* * * * * Operations on torrent ID $TORRENTID completed. * * * * *"
done

我认为添加' -o' grep之后会解决我的问题,但是这会删除所有没有被破坏的种子。

如何让此脚本删除已完成的种子和腐败种子?

这是我第一次发帖,所以我希望我做得对。

埃迪

1 个答案:

答案 0 :(得分:0)

问题是您使用单引号而不是后引号。

更改行:

DL_STOPPED='transmission-remote --auth=$TRUSER:$TRPASS --torrent $TORRENTID --info | grep -o "Error: No data found"'

为:

DL_STOPPED=`transmission-remote --auth=$TRUSER:$TRPASS --torrent $TORRENTID --info | grep -o "Error: No data found"`

单引号表示bash中的字符串,而反引号则表示子shell中的字符串。无论如何,我认为最好使用$( ...),因为这种表示法允许嵌套。

有关详细说明,请参阅https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html

此外,您应该更改if

if [ "$DL_STOPPED" = !"" ]; then

为:

if [ "$DL_STOPPED" != "" ]; then