我需要维护这个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天的日志目录。
答案 0 :(得分:5)
在除Linux以外的* nix系统上,以g
为前缀(例如gmake
,gtar
等)安装实用程序的GNU风格是相当常见的。在这种情况下,它可能是指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
答案 1 :(得分:3)
我在90%Mac办公室的Linux上工作,很多同事的脚本引用gsed
和gdate
之类的东西。我无法通过$OSTYPE
上的开关正确解决这个问题,我最终投降并做到了这一点:
sudo ln -s $(which date) /bin/gdate
此符号链接gdate
至date
。
这是非常安全的,因为对于GNU / Linux gdate(或gsed
,gtar
或gmake
) >显然是 GNU版本。
当然,您也可以为命令添加别名,但这会占用用户和shell。它实际上是整个程序的别名。