2016-03-02 15 views
0

我試圖建立一個循環來監視文件被Apple壓縮機寫的。一旦文件不再被寫,我想改變它的目錄的名稱。但是,當我喂含有文件路徑來lsof變量它出來亂碼。爲什麼lsof的錯誤地解釋我的變量?

例如,存儲爲$output"/Users/leftright/Desktop/Output/${process##*/}_PROCESSING/"lsof解釋爲DHt\x96?\x7f。我看不出在lsof手冊頁的任何說明爲什麼這是發生。它在函數內的if/then語句中被調用。

#!/bin/bash 

compressor() { 
    filepath="$1" 
    process="${filepath%.*}" 
    output="/Users/leftright/Desktop/Output/${process##*/}_PROCESSING/" 
    filename="${filepath##*/}" 
    moving="${output}""${filepath##*/}" 
    cleanname="${filename%.*}" 
    final= "${output}""${cleanname}".mp4 
    completed="/Users/leftright/Desktop/Output/${process##*/}_COMPLETED/${cleanname}.mp4" 
    mkdir -m 777 "$output"; 
    mv "$filepath" "$moving"; 
    /Applications/Compressor.app/Contents/MacOS/Compressor -computergroup "This Computer" -jobpath "$output""$filename" -settingpath /Users/leftright/Documents/CONVERTHQTEST.cmprstng -locationpath "$final"; 
    while true; do 
     if lsof "$final" > /dev/null; then 
      sleep 1 
     else 
      mv "$final" "$completed" 
     fi 
    done 
} 
export -f compressor 
fswatch -0 -v --event Created /Users/leftright/Desktop/Watch | xargs -0 -n1 -I filepath bash -c 'compressor "filepath"' 

我在這裏做錯了什麼?

+0

請看看:http://www.shellcheck.net/ – Cyrus

+0

感謝賽勒斯!這是一個非常好的資源。我已將其添加到我的書籤。 – Adam

回答

0

對於那些你在家裏玩,我離開的空白在final= "${output}""${cleanname}".mp4前面這導致它被錯誤地評估。賽勒斯對shellcheck.net的建議發現了這個問題。

相關問題