我正在学习 bash 脚本,需要获取从现在起的过去 30 天的信息。
我知道这是一个愚蠢的脚本但不知何故我遗漏了一些东西。
我需要显示过去 30 天的数据,方法如下:
#!/bin/bash
for ((i=0 ; i <= 30; i++))
do
z=`date --date='-i day'|awk '{print $2,$3}'`;
echo $z;
done
答案1
您正在运行date --date='-i day'
,但想要使用$i
变量。您还需要双引号而不是单引号,以确保变量被展开。请尝试以下方法:
#!/bin/bash
for ((i=0 ; i <= 30; i++))
do
z=`date --date="-$i day"|awk '{print $2,$3}'`;
echo "$z";
done
而且,既然你正在学习,这里有一个更简单的方法:
$ for i in {0..30}; do date -d "-$i days" +'%b %d'; done
Nov 16
Nov 15
Nov 14
Nov 13
Nov 12
Nov 11
Nov 10
Nov 09
Nov 08
Nov 07
Nov 06
Nov 05
Nov 04
Nov 03
Nov 02
Nov 01
Oct 31
Oct 30
Oct 29
Oct 28
Oct 27
Oct 26
Oct 25
Oct 24
Oct 23
Oct 22
Oct 21
Oct 20
Oct 19
Oct 18
Oct 17