我在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},其中包含文件路径列表(带空格名)?
由于
答案 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"
)