簡體   English   中英

我的 bash 腳本中需要二元運算符

[英]Binary operator expected in my bash script

使用這個 bash 腳本,我檢查目錄中是否有 *xls 文件,如果是,我將它們發送給使用 ssconvert 轉換為 *xlsx。 如果目錄中只有一個文件,所有這一切都有效。 如果目錄中有多個或多個,則會出現“預期二進制運算符”錯誤。 請幫我修復我的腳本。

#!/bin/bash
while true
do
test -f /home/doc/testy/*.xls && for f in /home/doc/testy/*.xls; do ssconvert "$f" "${f%.xls}.xlsx";
chown www-data:www-data "${f%.xls}.xlsx";
rm -f -- "$f"; done
sleep 10
done

test -f一次只能處理 1 個文件,但您可以改用find 我不知道如何將 find 的-exec與你的${f%.xls}.xlsx結合起來,所以我讓它看起來有點不同。

#!/bin/bash -u                                                                                                                                                                                

DIRECTORY=/home/doc/testy/
export EXTENSION_OLD=xls
export EXTENSION_NEW=xlsx

function doConvert {
    fOld="$1"
    fNew="${fOld%.$EXTENSION_OLD}.$EXTENSION_NEW"
    ssconvert "$fOld" "$fNew";
    chown www-data:www-data "$fNew";
    rm -f -- "$fOld";
}
export -f doConvert

cd $DIRECTORY
while true; do
    find -type f -name "*.$EXTENSION_OLD" -exec bash -c "doConvert {}" \;
    sleep 10
done

讓我假設您有意創建一個無限循環來監視指定目錄中新生成的文件。
您需要for f in..循環中檢查文件是否存在。 那么請你試試:

while true; do
    for f in /home/doc/testy/*.xls; do
        if [[ -f $f ]]; then
            newfile=${f}x
            ssconvert "$f" "$newfile"
            chown www-data:www-data "$newfile"
            rm -f -- "$f"
        fi
    done
    sleep 10
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM