我试图在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仍然带有'+',它仍然会引发错误。
似乎我想念这件事。整个动机是在一定时间间隔内以纳秒为单位生成时间戳。 预先感谢您的所有建议或替代方法。
答案 0 :(得分:1)
在
echo $(date -d $n_incr +%s%N)
$n_incr
是expanded至
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)