美文网首页
一.shell那些坑

一.shell那些坑

作者: 薇薇一笑vv | 来源:发表于2017-09-02 17:57 被阅读0次

1. date month问题

date +'%Y-%m-%d' : 2017-08-31
date -d '1 months ago' +'%Y-%m-%d' : 2017-07-31
date -d '2 months ago' +'%Y-%m-%d' : 2017-07-01 ???
解释:

shell计算month会先直接拿当前月份(如果指定日期就按照指定日期)减去指定月份,得到精确到天的一个日期A,然后和标准日期按天比对,如果计算出来日期不存在就往后推算N天,N=A-当月最后一天。
在我们的例子中,date -d '2 months ago' +'%Y-%m-%d的结果应该是2017-06-31,但是这一天不存在,所以结果为2017-07-01

如果需要计算某个月最后一天,应该先计算出后一个月的第一天,然后往前推算一天得到指定日期;计算月份也同样。

2. getopts问题

for i in {1..100}
do
     #OPTIND=1
     execute_sql -d "db" -t "table"
done

当i=2时:参数将无法传递给函数 execute_sql

解释:

在一个shell脚本执行过程中,OPTIND记录了参数处理的状态,对于第二次循环,OPTIND并没有改变,因此参数将不会被传递,除非手动修改OPTIND的值为1。

因此,在每次调用方法前执行OPTIND=1即可。参考

相关文章

网友评论

      本文标题:一.shell那些坑

      本文链接:https://www.haomeiwen.com/subject/infcjxtx.html