다른 함수를 호출 한 후 For 루프가 중지됨

noobcoderiam

긴 이야기 짧게 나는 기능이 있습니다. 아래에서 "months_and_days"라고합니다. 그 목적은 하루에 24 개의 로그를 만들어 "년-월"디렉터리에 저장하는 것입니다.

아래에 "main"이라는 두 번째 함수가 있습니다. 기본은 12 개월 동안 간단한 for 루프를 기반으로 디렉토리를 만듭니다. 주 함수가 이러한 디렉터리를 만든 후 "months_and_days"함수를 호출하여 더미 로그 파일로 채 웁니다.

어떤 이유로 첫 달의 디렉토리 "2018-01"만 생성하고 채운 다음 중지합니다.

나는 전에 bash에서 스크립팅 한 적이 없기 때문에 months_and_days가 완료된 후 왜 루프를 완료하기 위해 주 함수로 돌아 가지 않는지 잘 모르겠습니다.

주 함수를 다시 호출하고 주 루프에 대한 전역 변수를 유지해야합니까?

아래 코드 :

months=12
testDir=/home/name/bashScripts/testDir
fileToCopyPath=/opt/logs/192.168.217.129/2019-11/1-192.168.217.129-2019-11-24-13.log
currentMonth=0



function months_and_days () {
        declare -a daysArr=(31 28 31 30 31 30 31 31 30 31 30 31)
        for ((i=1; i<=${daysArr[$1]}; i++))
                do
                        for ((j=0; j<=23; j++ ))
                        do
                                if [ $j -le 9 ]
                                then
                                        tar -czvf $testDir/2018-$currentMonth/1-192-168-217-129-2018-$currentMonth-$i-0$j.tar.gz $fileToCopyPath
                                else
                                        tar -czvf $testDir/2018-$currentMonth/1-192-168-217-129-2018-$currentMonth-$i-$j.tar.gz $fileToCopyPath
                                fi
                        done
                done
}

function main () {
for ((i=1; i<=$months; i++))
do
        if [ $i -le 9 ]
        then
                mkdir $testDir/2018-0$i
                chmod 775 $testDir/2018-0$i
                currentMonth=0$i
                months_and_days "$i-1"

        else
                mkdir $testDir/2018-$i
                chmod 775 $testDir/2018-$i
                currentMonth=$i
                months_and_days "$i-1"
        fi
done
}

main
이카루스

imainmonths_and_days함수 모두에서 변경되는 전역 변수입니다 . 따라서 months_and_days에 대한 첫 번째 호출 후 i의 값은 32 (1 월의 일 수보다 하나 더 많음)이므로 $ months보다 크므로 모든 것이 중단됩니다.

추가하다

local i

months_and_days의 첫 번째 줄로 수정합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

무한 루프를 일으키는 map 함수 내에서 useState 후크가 호출 됨

분류에서Dev

다른 함수가 로컬 저장소에 항목을 설정 한 후 한 함수를 호출합니다.

분류에서Dev

사용자 지정 함수를 호출 한 후 Makefile에서 구분 기호가 누락되었습니다.

분류에서Dev

HTTP 호출이 400을 수신 한 후 루프가 중단 될 때까지 논리 앱

분류에서Dev

fs.readdir 함수를 호출 한 후 변수가 비어 있습니다.

분류에서Dev

다른 문자열 입력 함수가 팬텀 입력을 생성 한 후 scanf ()를 호출하면

분류에서Dev

올바른 @Path를 호출 한 후 Jersey가 404를 반환 함

분류에서Dev

sequelize findAll 메소드를 호출 한 후 setDataValue가 함수가 아닙니다.

분류에서Dev

외부 함수 호출 후 JQuery 루프 중지

분류에서Dev

vue js v-for 지시문 내에서 함수를 호출하면 루프가 무한 루프로 실행되며 이유를 모르겠습니다.

분류에서Dev

클래스의 멤버 함수를 호출 한 후 가비지 값

분류에서Dev

함수가 정의되지 않았습니다. js 파일을 동적으로로드 한 후 함수를 호출 할 수 없습니다.

분류에서Dev

AJAX 호출을 한 후 내 jQuery 함수가 죽습니다.

분류에서Dev

CMockery로 테스트 한 함수가 다른 특정 함수를 호출하는지 확인

분류에서Dev

특정 PHP 함수를 호출 한 후 Android Volley null 오류가 발생하고 다른 함수가 정상적으로 작동합니다.

분류에서Dev

내부 활동, 조각을 호출하기 위해 for 루프를 일시 중지하고 버튼을 누른 후 조각을 클릭 한 다음 루프를 다시 시작하여 다시 시작하는 방법

분류에서Dev

함수 호출 후 종료되는 루프에 대한 BASH

분류에서Dev

TSV / CSV 파일을 통한 루프가 실행 후 중지됨

분류에서Dev

myFunc &로 호출되는 무한 루프 함수를 중지하는 방법

분류에서Dev

코드를 작성했지만 인수를 정의하고 전달한 후 average () 함수를 호출하면 오류가 발생했습니다.

분류에서Dev

x64 어셈블리 함수를 호출 한 후 C ++ 변수가 0으로 재설정 됨

분류에서Dev

하나를 완료 한 후 다른 함수를 호출하고 결과를 변수로 만듭니다.

분류에서Dev

Ajax가 데이터로 다른 컨트롤러를 호출 한 후 Laravel

분류에서Dev

AngularJS의 Factory를 사용하여 첫 번째가 완료된 후 다른 매개 변수로 동일한 $ http 함수를 호출하십시오.

분류에서Dev

중괄호를 추가 한 후 파일 출력이 적절하지 않습니다.

분류에서Dev

ajax 호출 후 jquery 함수가 작동하지 않습니다.

분류에서Dev

두 가지 다른 방법으로 동일한 인수로 fopen을 호출 한 후 반환 값이 다릅니다.

분류에서Dev

removeFromSuperlayer를 호출 한 후에도 CALayer가 계속 표시됨

분류에서Dev

SetState ()를 호출 한 후 Flutter가 위젯을 다시 빌드하지 않음

Related 관련 기사

  1. 1

    무한 루프를 일으키는 map 함수 내에서 useState 후크가 호출 됨

  2. 2

    다른 함수가 로컬 저장소에 항목을 설정 한 후 한 함수를 호출합니다.

  3. 3

    사용자 지정 함수를 호출 한 후 Makefile에서 구분 기호가 누락되었습니다.

  4. 4

    HTTP 호출이 400을 수신 한 후 루프가 중단 될 때까지 논리 앱

  5. 5

    fs.readdir 함수를 호출 한 후 변수가 비어 있습니다.

  6. 6

    다른 문자열 입력 함수가 팬텀 입력을 생성 한 후 scanf ()를 호출하면

  7. 7

    올바른 @Path를 호출 한 후 Jersey가 404를 반환 함

  8. 8

    sequelize findAll 메소드를 호출 한 후 setDataValue가 함수가 아닙니다.

  9. 9

    외부 함수 호출 후 JQuery 루프 중지

  10. 10

    vue js v-for 지시문 내에서 함수를 호출하면 루프가 무한 루프로 실행되며 이유를 모르겠습니다.

  11. 11

    클래스의 멤버 함수를 호출 한 후 가비지 값

  12. 12

    함수가 정의되지 않았습니다. js 파일을 동적으로로드 한 후 함수를 호출 할 수 없습니다.

  13. 13

    AJAX 호출을 한 후 내 jQuery 함수가 죽습니다.

  14. 14

    CMockery로 테스트 한 함수가 다른 특정 함수를 호출하는지 확인

  15. 15

    특정 PHP 함수를 호출 한 후 Android Volley null 오류가 발생하고 다른 함수가 정상적으로 작동합니다.

  16. 16

    내부 활동, 조각을 호출하기 위해 for 루프를 일시 중지하고 버튼을 누른 후 조각을 클릭 한 다음 루프를 다시 시작하여 다시 시작하는 방법

  17. 17

    함수 호출 후 종료되는 루프에 대한 BASH

  18. 18

    TSV / CSV 파일을 통한 루프가 실행 후 중지됨

  19. 19

    myFunc &로 호출되는 무한 루프 함수를 중지하는 방법

  20. 20

    코드를 작성했지만 인수를 정의하고 전달한 후 average () 함수를 호출하면 오류가 발생했습니다.

  21. 21

    x64 어셈블리 함수를 호출 한 후 C ++ 변수가 0으로 재설정 됨

  22. 22

    하나를 완료 한 후 다른 함수를 호출하고 결과를 변수로 만듭니다.

  23. 23

    Ajax가 데이터로 다른 컨트롤러를 호출 한 후 Laravel

  24. 24

    AngularJS의 Factory를 사용하여 첫 번째가 완료된 후 다른 매개 변수로 동일한 $ http 함수를 호출하십시오.

  25. 25

    중괄호를 추가 한 후 파일 출력이 적절하지 않습니다.

  26. 26

    ajax 호출 후 jquery 함수가 작동하지 않습니다.

  27. 27

    두 가지 다른 방법으로 동일한 인수로 fopen을 호출 한 후 반환 값이 다릅니다.

  28. 28

    removeFromSuperlayer를 호출 한 후에도 CALayer가 계속 표시됨

  29. 29

    SetState ()를 호출 한 후 Flutter가 위젯을 다시 빌드하지 않음

뜨겁다태그

보관