2017-09-25 80 views
1

這是較大腳本的一小部分,但它不顯示正確的結果。我希望它檢查一個文件夾,如果該文件夾存在,然後檢查其中的文件數量。如果爲空則退出(繼續使用較大的腳本)。或者,也許它應該是一個大功能? 腳本:Bash函數未按預期返回值

#!/bin/bash 
BU_DIR=~/Backups 

function Func_CountFiles() { 
    FILES=$(find ${BU_DIR} -type f | wc -l) 
    # echo $BU_FILES 
} 

###  Get files from Backupfolder 
# 
if [ ! -d "${BU_DIR}" ]; then 
    BU_Status="Directory, ($BU_DIR), not found!" 
    else 
     Files=$(Func_CountFiles) 
     if [ $Files -le "0" ]; then 
      FU_Status="Current dir, ($BU_DIR), is empty." 
     else 
      # Files=$(Func_CountFiles) 
     BU_Status="Current dir, ($BU_DIR), contains $Files." 
     fi 
fi 
exit 0 

回答

2

的想法是對的,但你是不是返回什麼調用函數。您需要通過打印變量值FILES來返回該值。只有在調用函數中的變量Files用您在Func_CountFiles()中確定的計數進行更新。做

function Func_CountFiles() { 
    fileCount=$(find ${BU_DIR} -type f | wc -l) 
    printf "%d" "$fileCount" 
} 

,並捕獲調用函數的值作爲

declare -i file_count_from_function 
file_count_from_function=$(Func_CountFiles) 
printf "%d\n" "$file_count_from_function" 

因爲你正在使用bash利用自身的算術運算符((..))的數字評估。就像在C編程中一樣,您可以將變量用於算術評估。

if ((file_count_from_function <= 0)); then 
+1

Thanx,U我的一天。現在它可以工作,我可以在更大的腳本中實現它。 – b0red