Shell脚本:发现年份是错误的印刷价值

时间:2015-08-30 08:01:30

标签: bash shell

我试图找到上个月的年份价值。以下是我的代码。 而不是打印2015年,它错误地打印为223。 可能是什么问题?

findPrvYear(){
echo "Finding Previous Year"
(
set `date +%m" "%Y`
CURMTHY=$1
CURYRY=$2

if [ $CURMTHY -eq 1 ]
then PRVMTHY=12
     PRVYRY=`expr $CURYRY - 1`
else PRVMTHY=`expr $CURMTHY - 1`
     PRVYRY=$CURYRY
fi
echo $PRVYRY  //This is properly printing as 2015
return "$PRVYRY"
)
}

thisMonthY=$(date +%m)
thisYearY=$(date +%y)
findPrvYear $thisMonthY $thisYearY
retPrvYear=$?
echo $retPrvYear  //This is wrongly printing as 223

1 个答案:

答案 0 :(得分:1)

您需要使用$(...)来获取该函数的输出。不是$?,它为您提供返回代码(这是不同的东西)。所以,做一些更像这样的事情:

findPrvYear(){
echo "Finding Previous Year"
(
set `date +%m" "%Y`
CURMTHY=$1
CURYRY=$2

if [ $CURMTHY -eq 1 ]
then PRVMTHY=12
     PRVYRY=`expr $CURYRY - 1`
else PRVMTHY=`expr $CURMTHY - 1`
     PRVYRY=$CURYRY
fi
return "$PRVYRY"
)
}

thisMonthY=$(date +%m)
thisYearY=$(date +%y)
retPrvYear=$(findPrvYear $thisMonthY $thisYearY)