user3517375
user3517375

Reputation: 91

Bash script not creating files

Wrote a Bash script to create two files, each with a list of dates, to be used later. The script requires three parameters: a data subject, a minimum date, and a maximum date. Here's my script:

    #!/bin/sh
        dataSubj=$1
        minDate=$2
        maxDate=$3

        echo -e "my variables:\nsubject:\t$dataSubj\nstart:\t$minDate\nend:\t$maxDate"
       //Wrote the above line for debugging

        configDir=/opt/site1/ETL/MFGEDW/config/MERS2
        dateCount=1
        addTime=00:00:00
        fromDates=$dataSubj_fromDates.txt
        toDates=$dataSubj_toDates.txt

        cd $configDir

        echo "Creating fromDates file and adding $minDate"
        echo -e "$minDate $addTime" > ./$fromDates

        echo "Creating toDates file"
        >./$toDates

        while [[ $minDate < $maxDate ]]
            do
                minDate=$(date -d "$minDate 7 days" +%Y-%m-%d)
                ((dateCount++))
                if [[ $minDate < $maxDate ]]; then
                    echo "Adding $minDate to fromDates file"
                    echo -e "$minDate $addTime," >> ./$fromDates
                fi

                echo "Adding $minDate to toDates file"      
                echo -e "$minDate $addTime," >> ./$toDates  

                echo "$dateCount dates total"   
        done

        exit $dateCount

My issue is that instead of having two files with the desired dates, I have one hidden file with all the dates that should have been written in the two files. I'm fairly new to scripting, but modeled this after other scripts that I've used and know work. Is there something I'm missing or added unnecessarily? Thanks in advance.

Upvotes: 1

Views: 2841

Answers (1)

kabanus
kabanus

Reputation: 26005

This is your problem:

fromDates=$dataSubj_fromDates.txt
toDates=$dataSubj_toDates.txt

Bash doesn't know you mean dataSubj is the name of the variable. You're trying to use two different variables:

dataSubj_fromDates
dataSubj_toDates

Pretty sure those don't exist. Note '.' is a stopper for variable naming. Try using:

fromDates=${dataSubj}_fromDates.txt
toDates=${dataSubj}_toDates.txt

Next time print all variables when debugging.

Upvotes: 4

Related Questions