2013-02-26 34 views
0

對不起,我不能非常具體,我真的不知道什麼是問題,只是從bash開始,所以我的調試技巧僅限於回顯。unrar命令只有在手動執行時纔有效

我有下面的代碼:

#! /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年2月27日0點14分42秒SRC_DIR /卷/多媒體/ aa_bb /下載/ some_serie/ 2013年2月27日0點14分42秒RAR ./some_serie.rar

當文件完成下載時,程序通過傳輸作爲程序集執行。

必須提取的文件位於共享的外部硬盤驅動器上。

希望這會有所幫助。

+0

你不需要按順序unrar他們,以串行方式 - 意味着1,然後2,然後3等等。?如果是這樣的話,問題在於你試圖以並行方式解壓它們......可能是蠕蟲。簡單的解決方案是避免RAR歸檔種子。我多年來一直在對他們進行討伐:-) – prodigitalson 2013-02-26 22:03:55

+0

製作新腳本並逐行添加內容,並將其輸出到終端進行測試。也許你的特定文件存在一些問題(在設置等...)。所以用你需要使用的函數創建新的腳本並執行嘗試執行它。 – Stepo 2013-02-26 22:04:01

+0

RAR包含多個文件名似乎很有可能,但是當你將它傳遞給unrar時,像這樣:'unrar x -inul「$ RAR」',unrar將把它們全部看作一個參數。您可以嘗試從變量周圍刪除引號。 (如果文件名可能包含空格,會變得更復雜。) – William 2013-02-26 22:05:00

回答

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的輸出添加到您的問題

+0

更改了代碼。不用找了。增加了一些額外的信息希望它可以幫助。 – Boelensman1 2013-02-26 23:20:16

相關問題