shell脚本中的命令zip

时间:2014-04-08 18:52:43

标签: shell unix command zip

我在shell脚本中遇到问题

在脚本中我想压缩一个pdf文件列表

我有这样的工作:

#!/usr/bin/bash


zip_path="/home/d/zz.zip"
pdf_list="/home/d/01.pdf /home/d/02.pdf"

zip ${zip_path} ${pdf_list}

我想在pdf路径中处理空间 类似的东西正在工作(在zip命令下引用$ {pdf_list})但它只有在pdf_list只包含1个路径时才有效:

#!/usr/bin/bash


zip_path="/home/d/zz.zip"
pdf_list="/home/d/0    1.pdf"

zip ${zip_path} "${pdf_list}"

所以我尝试了类似的东西,但它不起作用:

#!/usr/bin/bash


zip_path="/home/d/zz.zip"
pdf_list="\"/home/d/0    1.pdf\" \"/home/d/0    2.pdf\""

zip ${zip_path} ${pdf_list}

更普遍的问题是: 使用该命令:

zip ${zip_path} ${pdf_list}

如何设置$ {pdf_list},其中包含文件路径列表(带空格名)?

由于

1 个答案:

答案 0 :(得分:1)

您必须使用数组来处理包含空格的几个元素:

pdf_list=( "/home/d/0    1.pdf" "/home/d/0    2.pdf" )

zip "$zip_path" "${pdf_list[@]}"
# ..............^^^^^^^^^^^^^^^^   this syntax is crucial: use exactly like this

您可以使用大量空格来提高可读性

pdf_list=(
    "/home/d/0    1.pdf" 
    "/home/d/0    2.pdf" 
)