无法在使用日期的shell脚本中打印自定义时间戳时发现错误?

时间:2019-04-02 22:05:02

标签: bash shell date

我试图在shell脚本中使用日期来操纵时间戳。我的代码是这个

echo $(date -d '+10 mins' +%s%N)

这将打印当前时间10分钟(以纳秒为单位)

  

1554242194228787268

当我将echo语句移至for循环内以基于循环变量执行自定义操作时。

for repi in `seq 1 2`;
do
    lp_incr=$((repi*10))
    n_incr='+'$lp_incr' mins'
    echo $(date -d $n_incr +%s%N)
done

遇到这样的错误

  

日期:额外的操作数'+%s%N'

删除多余的操作数不会帮助我单独查看日期

for repi in `seq 1 2`;
do
    lp_incr=$((repi*10))
    n_incr='+'$lp_incr' mins'
    echo $n_incr
    echo $(date -d $n_incr)
done

再次遇到不同的错误

  

+10分钟   日期:“ mins”参数缺少前导“ +”;

$ n_incr仍然带有'+',它仍然会引发错误。

似乎我想念这件事。整个动机是在一定时间间隔内以纳秒为单位生成时间戳。  预先感谢您的所有建议或替代方法。

1 个答案:

答案 0 :(得分:1)

echo $(date -d $n_incr +%s%N)

$n_increxpanded

echo $(date -d +10 mins +%s%N)

请注意,+10 mins不是单个参数,而是两个。

解决方法是引用参数:

echo $(date -d "$n_incr" +%s%N)

您也可以省略$n_incr

echo $(date -d "+$lp_incr mins" +%s%N)