2

我需要维护这个 shell 脚本:

export DAYDAY=`gdate --date "30 days ago" +"%Y%m%d"` 
if [ -d $TMP/AA/$DAYDAY]; then
    rm -r $TMP/AA/$DAYDAY  
fi

但我无法运行它,因为它找不到gdate;此代码用于清除恰好 30 天前的日志目录。

4

2 回答 2

7

这是G NU 的date;呼吁gdate与 BSD 相关的系统将其与自己的date.


我在 90% 的 Mac 办公室中使用 Linux 工作,我的很多同事的脚本都引用了gsedgdate. 在我无法通过打开开关正确解决此问题的地方,$OSTYPE我最终投降并做到了:

sudo ln -s $(which date) /bin/gdate

这个符号链接gdatedate.

这是相当安全的,因为不应该有一个gdate(或一个gsedgtargmake),因为安装在 GNU/Linux上的版本显然GNU 版本。

当然,您也可以给命令起别名,但这会继承用户和 shell。它实际上是对整个程序进行别名处理。

于 2016-03-23T13:20:27.590 回答
6

在 Linux 以外的 *nix 系统上,安装 GNU 风格的实用程序并以 a 为前缀是相当普遍的g(例如gmake,gtar等)。在这种情况下,这很可能是指该date命令的 GNU 风格。因此,既然您在 Linux 上,只需将其更改为date

export DAYDAY=`date --date "30 days ago" +"%Y%m%d"` 
if [ -d $TMP/AA/$DAYDAY]; then
    rm -r $TMP/AA/$DAYDAY  
fi
于 2013-03-11T03:41:32.147 回答