版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzgbm/article/details/78185732
直接看问题:要求用shell实现一个函数,求两天的天数差。
代码一:
#!/bin/bash
function diffDay()
{
local stampDiff=`expr $1 - $2`
local dayDiff=`expr $stampDiff / 86400`
return $dayDiff
}
startDay=`date +%s --date "1 days ago"`
endDay=`date +%s --date "60 days ago"
diff=`diffDay $startDay $endDay`
echo "diffday : "$diff
输出结果:
diffday :
发现没有输出值,那输出的值去哪了,看代码二:
#!/bin/bash
function diffDay()
{
local stampDiff=`expr $1 - $2`
local dayDiff=`expr $stampDiff / 86400`
return $dayDiff
}
startDay=`date +%s --date "1 days ago"`
endDay=`date +%s --date "60 days ago"
diff=`diffDay $startDay $endDay`
echo $?
echo "diffday : "$diff
输出结果:
59
diffday :
shell函数将返回值输出给了$?(代表了上个命令的退出状态,或函数的返回值),先说一个题外问题,注意理解上个命令,看下面代码三:
#!/bin/bash
function diffDay()
{
local stampDiff=`expr $1 - $2`
local dayDiff=`expr $stampDiff / 86400`
return $dayDiff
}
startDay=`date +%s --date "1 days ago"`
endDay=`date +%s --date "60 days ago"`
diff=`diffDay $startDay $endDay`
echo $?
echo $?
输出结果为:
59
0
如何将shell返回的值赋值给一个变量呢?看下面代码四:
扫描二维码关注公众号,回复:
3789327 查看本文章
#!/bin/bash
function diffDay()
{
local stampDiff=`expr $1 - $2`
local dayDiff=`expr $stampDiff / 86400`
return $dayDiff
}
function diffDay2()
{
local stampDiff=`expr $1 - $2`
local dayDiff=`expr $stampDiff / 86400`
echo $dayDiff
return $dayDiff
}
startDay=`date +%s --date "1 days ago"`
endDay=`date +%s --date "60 days ago"`
diff=`diffDay $startDay $endDay`
echo "diffday : "$diff
diff=`diffDay2 $startDay $endDay`
echo "diffday : "$diff
diffDay $startDay $endDay
diff=$?
echo "diffday : "$diff
输出结果:
diffday :
diffday : 59
diffday : 59
可以得出结论:在shell函数return的值是赋值给$?的,而变量接收的值是函数中的echo的输出值。