0

很抱歉我不能非常具体,我真的不知道问题出在哪里,刚开始使用 bash,所以我的调试技能仅限于 echo。

我有以下代码:

#! /bin/bash
# post_torrent.sh
{
  # Log file, file where we tell what events have been processed.
  LOG_FILE=/Users/Server/Documents/sickbeard/logs/post_torrent.log
  # Username for transmission remote.
  TR_USERNAME="admin"
  # Password for transmission remote.
  TR_PASSWORD="1234"
  # Get current time.
  NOW=$(date +%Y-%m-%d\ %H:%M:%S)
  # Source directory, should not be changed.
  SRC_DIR="${TR_TORRENT_DIR}/${TR_TORRENT_NAME}/"
  # Directory to store the un-compressed files in..
  DEST_DIR="${TR_TORRENT_DIR}/${TR_TORRENT_NAME}/"

    cd $SRC_DIR
    echo $NOW "SRC_DIR $SRC_DIR" >> $LOG_FILE
    RAR=$(find . -iname "*.rar")
    echo $NOW "RAR $RAR" >> $LOG_FILE
    unrar x -inul "$RAR"

    exit 0
} &

日志文件显示正在使用正确的文件。当我在终端中一一执行脚本中的语句时(我正在使用 mac osx 服务器),一切正常并且文件被提取。但是,在下载种子后执行此脚本时,它不会。

我一直试图找出为什么会这样大约三个小时,但仍然没有找到任何线索。我认为权限没问题,因为我对此进行了测试。然而,我是 bash 的新手,对 mac osx 命令行不太熟悉。

提前致谢。

编辑:一些额外的信息。日志如下所示: 2013-02-27 00:14:42 SRC_DIR /Volumes/Multimedia/aa_bb/Downloads/some_serie/ 2013-02-27 00:14:42 RAR ./some_serie.rar

该程序在文件下载完成时作为程序集通过传输执行。

必须提取的文件位于共享的外部硬盘驱动器上。

希望这可以帮助。

4

1 回答 1

1

换行:

unrar x -inul "$RAR"

至 :

for i in $RAR 
do
   unrar -x inul $i
done

原因是 $RAR 包含所有结果,并且您希望单独解析每个结果

[编辑]
我注意到您没有在示例中显示上述更改 - 如果没有它们,您想要做的事情将无法工作

改变这一行:

RAR=$(find . -iname "*.rar")

至:

RAR=`find . -iname "*.rar"`

顺便说一句,这些是引号,它们是重音
,将输出添加set -x到您的问题中
[/edit]

于 2013-02-26T22:10:18.297 回答