Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash函数未按预期返回值_Bash - Fatal编程技术网

Bash函数未按预期返回值

Bash函数未按预期返回值,bash,Bash,这是较大脚本的一小部分,但它没有显示正确的结果。我希望它检查一个文件夹,如果该文件夹存在,然后检查其中的文件数。如果为空,则退出(继续使用较大的脚本)。或者它应该是一个大功能? 剧本: #!/bin/bash BU_DIR=~/Backups function Func_CountFiles() { FILES=$(find ${BU_DIR} -type f | wc -l ) # echo $BU_FILES } ### Get files from Backup

这是较大脚本的一小部分,但它没有显示正确的结果。我希望它检查一个文件夹,如果该文件夹存在,然后检查其中的文件数。如果为空,则退出(继续使用较大的脚本)。或者它应该是一个大功能? 剧本:

#!/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

这个想法是正确的,但您不会向调用函数返回任何内容。您需要通过打印变量值
文件
来返回值。只有在调用函数中的变量
Files
更新为在
Func\u 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

if((file\U count\U来自函数Thanx,你让我很开心。现在它可以工作了,我可以在更大的脚本中实现它。