2017-09-25 3 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을 인쇄하여 값을 반환해야합니다. 그런 다음에 만 호출 함수의 변수 FilesFunc_CountFiles()에서 결정한 개수로 업데이트됩니다. 당신이 bash 숫자 평가에 대한 자신의 산술 연산자 ((..))를 사용하여 사용하고 있기 때문에

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" 

로 호출 된 함수의 값을 캡처. C 프로그래밍에서와 마찬가지로 산술 계산 용 변수를 사용할 수 있습니다.

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

고맙습니다. 이제 작동하고 더 큰 스크립트에서 구현할 수 있습니다. – b0red

관련 문제