將數組或字符串轉換為有效路徑時出現問題

我正在嘗試做一個功能,將使我的生活更容易將圖像轉換為pdf。我使用的是img2pdf,這是一個Python腳本。我希望能夠將文件和目錄傳遞給我的函數(帶有擴展的wild標記,如:directory/*)。

我解決了Windows路徑轉換的問題,但是現在意識到如果路徑有空格,函數就不起作用了,或者Python會在路徑選擇上出錯。

我嘗試編寫函數,生成一個包含所有文件的字符串:

imgtopdf(){
    list=""
    while [[ "$1" != "" ]] ; do
        list+=" '$(cygpath -w "$1")'" # 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 [[ "$1" != "" ]] ; do
        list+="$(cygpath -w "$1")"
        shift
    done
    echo ${list[@]}
    img2pdf -o img2pdf.pdf --pagesize A4 ${list[*]}
}

注意:cygpath -w負責將/cygdrive/path轉換為Windows路徑,以便Python理解路徑。

? 最佳回答:

引用是至關重要的:使用"${list[@]}",而不是${list[*]}。冒著self-serving的風險,見https://stackoverflow.com/a/12316565/7552

另外,將元素附加到數組的語法需要括號(額外的空格是可選的):

list+=( "$(cygpath -w "$1")" )

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[@]}"
}
主站蜘蛛池模板: 日韩精品无码Av一区二区| 色婷婷亚洲一区二区三区| 亚洲日韩精品一区二区三区| 一区二区三区在线观看视频| 成人影片一区免费观看| 亚洲国产一区国产亚洲| 国内精品视频一区二区三区八戒 | 久久精品国产第一区二区| 国产一区二区视频在线播放| 奇米精品视频一区二区三区| 国产日韩精品一区二区在线观看| 日韩AV无码一区二区三区不卡毛片| 中文字幕人妻第一区| 精品亚洲综合在线第一区| 国产成人精品亚洲一区| 日韩精品一区二区三区中文 | 国产精品毛片一区二区| 国产Av一区二区精品久久| 无码av免费一区二区三区| 中文字幕在线精品视频入口一区| 国产精品视频一区国模私拍 | 成人免费区一区二区三区| 黑人大战亚洲人精品一区| 亚洲AⅤ视频一区二区三区| 色窝窝免费一区二区三区 | 久久久久人妻精品一区蜜桃| 福利一区二区三区视频午夜观看| 国产精品久久一区二区三区| 亚洲高清美女一区二区三区| 久久er99热精品一区二区| 国产一区二区三区免费观看在线| 波多野结衣的AV一区二区三区 | 久久久久人妻一区精品| 国产av成人一区二区三区| 国产AV午夜精品一区二区三区| 亚洲国产一区二区视频网站| 岛国精品一区免费视频在线观看| 国产丝袜无码一区二区三区视频| 亚洲AV无码一区二区乱子伦| 国产一区二区三区影院| 国产a久久精品一区二区三区|