Bash zip 在脚本中执行时似乎忽略参数(排除)

问题描述 投票:0回答:0

我有以下要压缩的目录结构:

dir2zip
  subdir1
    file1.txt
  subdir2
    file2.txt
  subdir3
    file3.txt

我想排除

subdir3
,所以我使用如下命令行:

zip -r dir2zip.zip dir2zip -x "dir2zip/subdir3/*"

在提示符下执行此操作时,会收到以下正确输出:

manfred@altair:~/data$ zip -r dir2zip.zip dir2zip -x "dir2zip/subdir3/*"
  adding: dir2zip/ (stored 0%)
  adding: dir2zip/subdir2/ (stored 0%)
  adding: dir2zip/subdir2/file2.txt (deflated 72%)
  adding: dir2zip/subdir1/ (stored 0%)
  adding: dir2zip/subdir1/file1.txt (deflated 68%)

但是当我在一个脚本中执行此操作时,参数由一个字符串组成,例如像这样:

manfred@altair:~/data$ zipvar="-r dir2zip.zip dir2zip -x \"dir2zip/subdir3/*\""
manfred@altair:~/data$ echo $zipvar
-r dir2zip.zip dir2zip -x "dir2zip/subdir3/*"

...我用这个变量作为参数执行 zip,然后输出是这样的:

manfred@altair:~/data$ zip $zipvar
  adding: dir2zip/ (stored 0%)
  adding: dir2zip/subdir3/ (stored 0%)
  adding: dir2zip/subdir3/file3.txt (deflated 94%)
  adding: dir2zip/subdir2/ (stored 0%)
  adding: dir2zip/subdir2/file2.txt (deflated 72%)
  adding: dir2zip/subdir1/ (stored 0%)
  adding: dir2zip/subdir1/file1.txt (deflated 68%)

这里 zip 也确实压缩了

subdir3
,看起来当在变量中使用参数执行 zip 时,它会忽略其中的一些参数。 有人提示我如何将 zip 与脚本生成的参数一起使用到变量吗? 我不想在脚本中明确地写下我所有的 zip 命令,列表会太长而且太不灵活......

bash zip
© www.soinside.com 2019 - 2024. All rights reserved.