如何在atd中声明变量?

  • 本文关键字:声明 变量 atd bash shell
  • 更新时间 :
  • 英文 :

VDST=/home/v3000/
VDATE=20210725
echo "tar -jcf ${VDST}v3000_$VDATE.tar.bz2 --remove-files -C ${VDST} $VDATE;
md5=($(md5sum ${VOSDST}v3000_$VDATE.tar.bz2));
date +'%Y%m%d-%H%M%S  v3000_$DDATE.tar.bz2  $md5' >> ${VOSDST}v3000_YYYYMMDD.log" |
at now

这样,我就没有办法得到md5变量:date +'%Y%m%d-%H%M%S v3000_$DDATE.tar.bz2 $md5' >> ${VOSDST}v3000_YYYYMMDD.log。我怎么写得到md5变量?

VDST=/home/v3000/
VDATE=20210725
echo "tar -jcf ${VDST}v3000_$VDATE.tar.bz2 --remove-files -C ${VDST} $VDATE;
"'md5=($(md5sum '"${VDST}"'v3000_'"$VDATE"'.tar.bz2));'"
date +'%Y%m%d-%H%M%S  v3000_$VDATE.tar.bz2  '"'$md5'" >> ${VDST}v3000_YYYYMMDD.log" |
at now

您可以这样做,尽管代码看起来不是很优雅。

首先,将MD5存储到数组中是没有意义的。一个标量就足够了:

md5=$(md5sum ${VOSDST}v3000_$VDATE.tar.bz2)
然后,您需要bash将变量(即参数)展开。通过将它放在单引号之间,可以显式地告诉bash而不是展开变量。因此,您必须将其写为
date "+%Y%m%d-%H%M%S  v3000_$DDATE.tar.bz2  $md5" >> ${VOSDST}v3000_YYYYMMDD.log" 

如果你真的想使用数组,不管出于什么原因,坚持你的版本,但然后像数组一样访问它,这样更清晰:

date "+%Y%m%d-%H%M%S  v3000_$DDATE.tar.bz2  ${md5[0]}" >> ${VOSDST}v3000_YYYYMMDD.log" 

虽然您可以使用普通数组名称,然后自动获取数组的第一个元素,但如果显式提供索引,则更易于阅读。

相关内容

  • 没有找到相关文章

最新更新