bash 正在压缩整个家

bash is zipping entire home

我正在尝试备份 /home/mc/server/ 中的所有 world* 个文件夹并将压缩包放入 /home/mc/backup/

#!/bin/bash
moment=$(date +"%Y%m%d%H%M")
backup="/home/mc/backup/map$moment.zip"
map="/home/mc/server/world*"
zipping="zip -r -9 $backup $map"
eval $zipping

压缩文件按预期在 backup 文件夹中创建,但是当我解压缩时它包含整个 /home 目录。我 运行 这个 bash 有两个方面:

  1. 手动
  2. 使用用户的 crontab

最后,如果我输入 echo $zipping 的回显,这会正确打印我需要触发的命令。我错过了什么?提前谢谢你。

没有理由在这里使用 eval(不,如果你想记录命令行并随后执行它,那么在 DRY 的基础上证明它不是一个很好的理由 IMO。)

定义一个函数并使用适当的参数调用它:

#!/bin/bash
moment=$(date +"%Y%m%d%H%M")

zipping () {
  output=
  shift
  zip -r -9 "$output" "$@"
}

zipping "/home/mc/backup/map$moment.zip" /home/mc/server/world*

(我承认,我不知道是什么导致了你报告的行为,但最好在尝试诊断之前确认它不是特定于 eval 的使用进一步。)