我希望在unix / shell脚本中获取上一个日期。

我使用以下代码

date -d '1 day ago' +'%Y/%m/%d'

但是我收到以下错误。

date: illegal option -- d

至于我在inetrnet上读到的内容,它基本上意味着我使用的是旧版本的GNU。 任何人都可以帮助这个。

更多信息

unix> uname -a

SunOS Server 5.10 Generic_147440-19 sun4v sparc SUNW,Sun-Fire-T200

以下命令也会出错。

unix> date --version

date: illegal option -- version
usage:  date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]

===============>>#1 票数:13

尝试这个:

date --date="yesterday" +%Y/%m/%d

===============>>#2 票数:6

dtd="2015-06-19"
yesterday=$( date -d "${dtd} -1 days" +'%Y_%m_%d' )
echo $yesterday;

===============>>#3 票数:5

您可以使用

date -d "30 days ago" +"%d/%m/%Y"

要获得30天前的日期,同样可以用x天数替换30

===============>>#4 票数:4 已采纳

这里建议的几个解决方案假设系统中存在GNU coreutils 以下内容适用于Solaris:

TZ=GMT+24 date +’%Y/%m/%d’

===============>>#5 票数:3

为了使用date命令获得1天的返回日期:

date -v -1d它将给出(当前日期-1)表示前一天。

date -v +1d这将给出(当前日期+1)表示1天后。

类似下面的代码可以用来代替d来找出年,月等

y-Year, m-Month w-Week d-Day H-Hour M-Minute
S-Second

===============>>#6 票数:2

以下脚本将上一个日期打印到targetDate (指定日期或给定日期)

targetDate=2014-06-30
count=1
startDate=$( echo `date -d "${targetDate} -${count} days" +"%Y-%m-%d"`)
echo $startDate

===============>>#7 票数:0

SunOS附带了传统的BSD用户工具,这些工具通常缺乏预期的现代选项。 看看你是否可以获得XPG附加组件(它类似于/usr/xpg4/bin/date )或者如果可以的话安装GNU coreutils软件包。

在此期间,您可能需要编写自己的简单日期处理脚本。 网上有很多例子,例如Perl。 比如这个

vnix$ perl -MPOSIX=strftime -le 'print strftime("%Y%m", localtime(time-86400))'
201304

(略微适应,如果你与链接背后的那个比较。)

===============>>#8 票数:0

我使用以下解决方法来获得所需的解决方案。

timeA=$(date +%Y%m)
sysD=$(date +%d)
print "Initial sysD $sysD">>LogPrint.log
sysD=$((sysD-1))
print "Final sysD $sysD">>LogPrint.log
finalTime=$timeA$sysD

我希望这对那些面临同样问题的人有用。

===============>>#9 票数:0

$ date '+%m/%d/%Y' --- current date


$ TZ=Etc/GMT+24 date  '+%m/%d/%Y'  -- one dayprevious date

适当使用时区

===============>>#10 票数:0

试试这个:gdate -d“1天前”+“%Y /%m /%d”

===============>>#11 票数:-1

问题

您使用反引号而不是单引号作为参数。 您也可能没有使用GNU日期或支持您正在使用的标志的日期版本。

正确引用你的论点。 例如:

$ date -d '1 day ago' +'%Y/%m/%d'
2013/04/14

  ask by misguided translate from so

未解决问题?本站智能推荐:

3回复

将当前日期转换为Unix时间戳但使用天数

在Solaris中,我试图编写一个Shell脚本,将Unix的当前日期转换为1970年1月1日之后的天数。 这是因为etc / shadow不是使用纪元时间,而是使用“天数格式” 即“ root:G9yPfhFAqvlsI:15841 ::::::”,其中15841是日期。 因此,
2回复

在Solaris OS中的AWK中的小数点后的取整

我想要使​​用某个文件的文件夹中文件的总大小,该文件的名称开头为sun solaris os中的abc_1_ *之类的名称,因为在这里我无法使用du -ch,当前我正在使用find命令,我正在获取所需的输出,但是我想在小数点后四舍五入输出 当前代码:- 输出:- 所需输出:
2回复

Shell脚本(bash / ksh):读取变量20秒

我需要等待输入20秒,之后myscript应该继续执行。 我尝试过使用read -t20 var但这只适用于bash。 我在Solaris 10上使用ksh。 有人能帮助我吗? 编辑 :20秒只是一个例子。 我们假装它需要等待1个小时。 但是这个家伙可以或者不可能在PC前面
2回复

两个不同目录中存在的comapring文件内容的更改统计信息

在Solaris 10 ,我有两个目录,两个目录中的文件大致相同,但是只有一个目录中可能只有少量文件存在。 几乎相同的文件列表。 使用diff命令,我可以看到个体差异。 将diff与find语句的组合运行在for循环中,如下所示: 我可以检查文件的个别差异。 但是,我需要有一些统
2回复

包含文件中的UNIX / solaris Shell脚本shebang

我有一个functions.sh脚本,其中包含一堆要在其他脚本中使用的全局函数。 此函数脚本以bash(#!/ bin / bash)编写 这些脚本已经写了多年,所以较旧的脚本或使用#!/ bin / sh(与solaris中的#!/ bin / bash不同)。 我的问题是,当您
3回复

bash:将字符串读入数组bash中,并保留空格[重复]

这个问题已经在这里有了答案: 重击:将字符串拆分为字符数组 13个答案 我有字符串“嗨,你好吗”,我想将此字符串放入数组,如下所示。 但是我想保留空间。 关于如何做到这一点的任何想法?
1回复

简化BASH命令

我发现自己不得不每隔一段时间执行一次,并且想知道是否有一种方法可以简化此命令? 本质上,我要做的就是复制文件并重新命名。 创建A1, A2.. B1, B2..是不可协商的 :)因此,嵌套的for循环。 注意,我对创建实际的脚本文件不感兴趣。 我需要快速又脏的东西。 系统
2回复

Unix:在特定时间在其他计算机上运行脚本

我正在处理一个脚本,该脚本获取脚本名称和时间来运行该脚本并从配置文件中登录/ host名称。 我没有 cron,at和crontab权限。 现在,还有其他方法可以实现逻辑,以便在输入时间(在可配置文件中设置)从另一个在不同主机上运行的脚本运行脚本。 详细信息:就像script_
4回复

Unix-仅从目录删除文件

用目录结构说: 您将如何从“ anotherdirec”中删除所有文件(不是目录,又不是递归)? 在此示例中,它将删除2个文件(other.dat,myfile.txt) 我已经在'midlev'目录中尝试了以下命令,但它给出了此错误( find: bad option -max
1回复

根据Shell脚本中的文件模式获取最新/最新文件

我正在Bash,Solaris中编写Shell脚本。 我正在尝试获取与特定文件模式匹配的最新文件,并对其进行SCP处理。 我一直在阅读,大多数实现都是基于ls命令的,该命令不适用于有趣的字符。 我正在寻找可以与我到目前为止所写内容兼容的替代方法。