Linux bash//日期 : Working with variables and date

标签 linux bash date variables

我想知道某个问题: 我想使用数学表达式“增加”一个日期,使用两个变量。

一个 bash 脚本有一个变量(日期):

TS=$(日期 +%y-%m-%d)

我想在一个循环中处理它:

for((i=1; i<=$iquant; i++))
do
FTS=`date '+%y-%m-%d' -d "$TS+'$i*$iquant' days"`
FFTS=`date '+%y-%m-%d' -d "$FTS+'$idays' days"`
echo $FTS
echo $FFTS
done

运行控制台时显示:

date: invalid date ‘16-11-06+'1*5' days’
date: invalid date ‘+'5' days’

似乎没有计算变量...使用反引号应该可以防止这种情况发生?有没有人有建议或更好的方法来解决这个问题?问候乔西

系统:4.4.0-21-通用 LINUX UBUNTU

最佳答案

在 bash 中,文本连接是默认的。要显式计算某些内容,请使用带有美元+双括号的表达式,如下所示:数学”上下文:$((i*iquant))(不需要美元前缀)

并删除单引号,这会误导 date 命令的解析。

固定代码(使用 iquant=5,今天运行):

TS=$(date +%y-%m-%d)

for((i=1; i<=iquant; i++))
do
  FTS=`date '+%y-%m-%d' -d "$TS + $((i*iquant)) days"`
  FFTS=`date '+%y-%m-%d' -d "$FTS + $idays days"`
  echo "$FTS"
  echo "$FFTS"
done

结果:

16-11-11
16-11-12
16-11-16
16-11-17
16-11-21
16-11-22
16-11-26
16-11-27
16-12-01
16-12-02

关于Linux bash//日期 : Working with variables and date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40455102/

相关文章:

linux - 我怎样才能使我的 Makefile 更好?

html - xpath html 将所有列 1 和 2 放在一起并与列 ":"连接

linux - 什么意思!#:* !#:1- in a bash command?

linux - Bash 脚本,不包括值

MySQL 触发器内的日期差异检查

mysql - 如何计算两个日期之间的天数,

php - 在 cakephp Controller 中找不到 4o4

php - 复制整个 MySql 数据库

java - 将当前日期转换为整数

bash - Docker 容器启动命令未获取 .bashrc 变量