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"'
我在這裏做錯了什麼?
請看看:http://www.shellcheck.net/ – Cyrus
感謝賽勒斯!這是一個非常好的資源。我已將其添加到我的書籤。 – Adam