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,你让我很开心。现在它可以工作了,我可以在更大的脚本中实现它。