Bash 스크립트에서 urldecode 함수 사용이 실패합니다. a%xyb는 ayb가 됩니다(xy는 숫자입니다).

Bash 스크립트에서 urldecode 함수 사용이 실패합니다. a%xyb는 ayb가 됩니다(xy는 숫자입니다).

deurlnamefroms는 폴더 경로를 renameutils무시하지만 파일 이름을 올바르게 바꿉니다 %xy.

하지만 지금까지 Bash 스크립트에서 문자열을 처리할 수 있는 함수를 찾지 못했습니다.

내가 지금까지 시도한 것 :

1.

shopt -s expand_aliases
alias urldecodePython='python3 -c "import sys, urllib.parse as ul; print(ul.unquote_plus(sys.argv[1]))"'
fnonly=$( urldecodePython "$fnonly" )
urldecode() {
    # urldecode <string> ,  assumes the data contains no backslash.

    local url_encoded="${1//+/ }"
    printf '%b' "${url_encoded//%/\\x}"
}
fnonly="$(urldecode "$fnonly")"
fnonly=$(echo "$fnonly" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g')
rename 'use URI::Escape; $_ = uri_unescape $_' $fdir/*%*

deurlname( 문자열 함수가 아닌 ; 으로 전환하기 전에는 동일한 문제가 있었습니다.)

관련 정보