2017-09-25 83 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