写了一个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
我的问题是,我没有两个具有所需日期的文件,而是有一个隐藏文件,其中包含应该在两个文件中写入的所有日期。我对脚本编写起来相当新,但是在我使用过并知道工作的其他脚本之后对此进行了建模。我有什么遗失或不必要的补充吗?提前谢谢。
答案 0 :(得分:3)
这是你的问题:
fromDates=$dataSubj_fromDates.txt
toDates=$dataSubj_toDates.txt
Bash不知道你的意思是dataSubj
是变量的名称。您正尝试使用两个不同的变量:
dataSubj_fromDates
dataSubj_toDates
很确定那些不存在。注意 '。'是变量命名的终结者。尝试使用:
fromDates=${dataSubj}_fromDates.txt
toDates=${dataSubj}_toDates.txt
下次在调试时打印所有变量。