将数组或字符串转换为有效路径的问题
Issue with converting array or string to valid path
我正在尝试制作一个功能,让我的生活更轻松地将图像转换为 pdf。我正在使用 img2pdf
这是一个 Python 脚本。我希望能够将文件和目录传递给我的函数(带有用于扩展的通配符,例如:directory/*
)。
我到了解决 Windows 路径转换问题的地步,但现在意识到如果路径有空格,该功能将不起作用,或者它到了 Python 只会在路径上出错。
我尝试编写函数,创建一个包含所有文件的字符串:
imgtopdf(){
list=""
while [[ "" != "" ]] ; do
list+=" '$(cygpath -w "")'" # Tried $(echo "$list" | xargs -0 echo) but it removes back-slashes!
shift
done
list="${list:1}"
echo $list
img2pdf -o img2pdf.pdf --pagesize A4 $list
}
然后尝试使用数组来保存所有文件:
imgtopdf(){
list=()
while [[ "" != "" ]] ; do
list+="$(cygpath -w "")"
shift
done
echo ${list[@]}
img2pdf -o img2pdf.pdf --pagesize A4 ${list[*]}
}
注意:cygpath -w
负责将 /cygdrive/ 路径转换为 Windows 路径,以便 Python 理解路径。
引用很重要:使用 "${list[@]}"
,而不是 ${list[*]}
。冒着自私的风险,请参阅
此外,将元素附加到数组的语法需要括号(额外的空格是可选的):
list+=( "$(cygpath -w "")" )
bash 中检查变量的最佳方法是使用 declare -p list
imgtopdf() {
list=()
for file in "$@"; do
list+=( "$(cygpath -w "$file")" )
done
declare -p list
img2pdf -o img2pdf.pdf --pagesize A4 "${list[@]}"
}
我正在尝试制作一个功能,让我的生活更轻松地将图像转换为 pdf。我正在使用 img2pdf
这是一个 Python 脚本。我希望能够将文件和目录传递给我的函数(带有用于扩展的通配符,例如:directory/*
)。
我到了解决 Windows 路径转换问题的地步,但现在意识到如果路径有空格,该功能将不起作用,或者它到了 Python 只会在路径上出错。
我尝试编写函数,创建一个包含所有文件的字符串:
imgtopdf(){
list=""
while [[ "" != "" ]] ; do
list+=" '$(cygpath -w "")'" # Tried $(echo "$list" | xargs -0 echo) but it removes back-slashes!
shift
done
list="${list:1}"
echo $list
img2pdf -o img2pdf.pdf --pagesize A4 $list
}
然后尝试使用数组来保存所有文件:
imgtopdf(){
list=()
while [[ "" != "" ]] ; do
list+="$(cygpath -w "")"
shift
done
echo ${list[@]}
img2pdf -o img2pdf.pdf --pagesize A4 ${list[*]}
}
注意:cygpath -w
负责将 /cygdrive/ 路径转换为 Windows 路径,以便 Python 理解路径。
引用很重要:使用 "${list[@]}"
,而不是 ${list[*]}
。冒着自私的风险,请参阅
此外,将元素附加到数组的语法需要括号(额外的空格是可选的):
list+=( "$(cygpath -w "")" )
bash 中检查变量的最佳方法是使用 declare -p list
imgtopdf() {
list=()
for file in "$@"; do
list+=( "$(cygpath -w "$file")" )
done
declare -p list
img2pdf -o img2pdf.pdf --pagesize A4 "${list[@]}"
}