gpt4 book ai didi

linux - shell 脚本 : Year value is not returned

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:37 24 4
gpt4 key购买 nike

我正在尝试获取上个月的年份。下面的代码返回空白年份值(即没有打印年份值)

findPrvYear(){
(
set `date +%m" "%Y`
CURMTHY=$1
CURYRY=$2
if [ $CURMTHY -eq 01 ]
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)
echo "valueassigned" $retPrvYear //This is not printing year value

最佳答案

替换:

return "$PRVYRY"

与:

echo "$PRVYRY"

return 语句设置退出代码。你不想要那个。你想在标准输出上提供字符串。

更简单的例子

考虑这个简单的函数:

$ fn() { return 100; }

现在让我们运行它:

$ fn

它不产生任何输出。但是它确实设置了退出代码:

$ echo $?
100

退出代码限制为 8 位。所以,您可能不想通过它们回到过去。

相比之下,考虑哪个确实在标准输出上产生了一个字符串:

$ fn() { echo 100; }
$ fn
100

可以根据需要使用命令替换捕获该字符串:

$ x=$(fn)
$ echo $x
100

其他问题

此代码为函数提供参数:

retPrvYear=$(findPrvYear $thisMonthY $thisYearY)

由于 set 语句,函数 findPrvYear 忽略了这些参数。

简化

如果你有 GNU date,那么代码可以替换为:

retPrvYear=$(date -d '1 month ago' +%Y)

(这与 BSD (OSX) date 不兼容。)

关于linux - shell 脚本 : Year value is not returned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com