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