Bash脚本无法创建文件

时间:2016-12-15 18:41:03

标签: bash file

写了一个Bash脚本来创建两个文件,每个文件都有一个日期列表,以便稍后使用。该脚本需要三个参数:数据主题,最小日期和最大日期。这是我的剧本:

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

我的问题是,我没有两个具有所需日期的文件,而是有一个隐藏文件,其中包含应该在两个文件中写入的所有日期。我对脚本编写起来相当新,但是在我使用过并知道工作的其他脚本之后对此进行了建模。我有什么遗失或不必要的补充吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

这是你的问题:

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

Bash不知道你的意思是dataSubj是变量的名称。您正尝试使用两个不同的变量:

dataSubj_fromDates
dataSubj_toDates

很确定那些不存在。注意 '。'是变量命名的终结者。尝试使用:

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

下次在调试时打印所有变量。