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
} &

ログ ファイルは、正しいファイルが使用されていることを示しています。スクリプト内のステートメントをターミナルで 1 つずつ実行すると (Mac osx サーバーで作業しています)、すべてが機能し、ファイルが抽出されます。ただし、トレントがダウンロードされた後にこのスクリプトが実行されると、実行されません。

これがなぜなのかを約 3 時間調べてみましたが、まだ手がかりが見つかりません。私がテストしたように、権限は問題ないと思います。ただし、私は 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

于 2013-02-26T22:10:18.297 に答える