,當我跑我的bash腳本,我收到此錯誤意外結束小時,仍然會出現這個錯誤。語法錯誤:</p> <p><strong>語法錯誤:文件意外結束</strong></p> <p>真的不能找到錯誤所在,一直在尋找文件
這裏是腳本希望有一個斜面點我在正確的方向:
#!/bin/bash
BACKUPDIR=~/backup
SCRIPTDIR=~/respaldar
BACKUPFILE=/respaldo.$(date +%F).bz2
BACKUPHOST=199.21.112.70
COUNT=$(ls $BACKUPDIR | wc -l)
TRESHOLD=7
if [[ ! -e $BACKUPDIR ]]
then
echo "Creating Backup Directory because it doesn\'t exist !"
mkdir ~/backup
COUNT=0
# exit 0
else
COUNT=$(ls $BACKUPDIR | wc -l)
fi
if [[ $COUNT -le $THRESHOLD ]]
then
tar -cjvf $BACKUPDIR/$BACKUPFILE $SCRIPTDIR
if [[ $? -ne 0 ]]; then echo "Problems Creating Backup File;" fi
scp $BACKUPDIR/$BACKUPFILE $BACKUPHOST:
if [[ $? -ne 0 ]]; then echo "Problems Copying Backup File to Backup Host;" fi
fi
#END
欣賞的幫助。
'如果[[$? -ne 0]];然後回顯「創建備份文件的問題」;在fi之前,fi應該有一個分號。 – fedorqui
請參閱http://www.shellcheck.net/以獲取自動化測試工具。 –
'COUNT = $(ls $ BACKUPDIR | wc -l)'該死的愚蠢。 'files =(「$ backupdir」/ *); count = $ {#files [@]}'具有相同的效果,不需要執行所有在管道中產生'ls'所需的所有fork和exec調用的開銷......並且不依賴於實現定義的行爲'ls'。 ('ls'輸出應該保證每行只有一行,但是隻有當它沒有到達終端時,在這種情況下它是實現定義的...所以如果你依賴於'ls'看起來像當你將它運行到你的屏幕時,給定的平臺,它可能會給完全不同的輸出到一個管道!) –