Bash函数未按预期返回值

时间:2017-09-25 10:48:56

标签: 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

1 个答案:

答案 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