Bash 除非直接调用函数,否则curl请求错误

Bash 除非直接调用函数,否则curl请求错误,bash,curl,Bash,Curl,当我使用bash获取网页时,我得到了一个400错误的请求-响应头,但仅当我在另一个函数中调用我的函数时 get_download_page() { [ $# -eq 1 ] || die "get_location: 1 argument expected, recieved $#" page="$(get_page $1)/download" echo "http://www.curse.com$(curl --silent -I $page | awk 'NR==

当我使用bash获取网页时,我得到了一个400错误的请求-响应头,但仅当我在另一个函数中调用我的函数时

get_download_page() {
    [ $# -eq 1 ] || die "get_location: 1 argument expected, recieved $#"

    page="$(get_page $1)/download"

    echo "http://www.curse.com$(curl --silent -I $page | awk 'NR==4 { print; exit }' | cut -d\  -f2)"
}

get_page() {
    [ $# -eq 1 ] || die "get_page: 1 argument expected, recieved $#"

    echo "www.curse.com/addons/wow/$1"
}

get_file() {
    [ $# -eq 1 ] || die "get_file: 1 argument expected, recieved $#"

    echo $(curl -s $1 | sed -rn 's/.*data-href="([^"]+)".*/\1/p')
}

fetch_addon() {
    [ $# -eq 1 ] || die "fetch_addon: 1 argument expected, recieved $#"

    download=$(get_download_page $1)
    file=$(get_file $download)

    echo $file
}

调用
fetch\u addon“bagnon”
我得到一个错误的请求头

但如果我这样做:
get\u文件”http://www.curse.com/addons/wow/bagnon/704176“

这就是我所期望的,即使
get\u download\u page“bagnon”
返回的链接与我传递给
get\u file
的链接相同

如下所示:

get_download_page "bagnon"
echo "http://www.curse.com/addons/wow/bagnon/704176"
输出:

http://www.curse.com/addons/wow/bagnon/704176
http://www.curse.com/addons/wow/bagnon/704176
经过进一步调查,这两条弦似乎并不完全相等。 当我这样做的时候

echo $(cmp -bl <(echo "$download") <(echo "http://www.curse.com/addons/wow/bagnon/704176"))

Ie生成的下载链接的最后一个字符是^M,手动找到的下载链接的最后一个字符是^J

出于某种原因,头curl返回时有mac文件结尾,因此导致它返回的链接在
^M
中结束,当将该链接传递回curl时,它惊慌失措地得到了错误的请求头

我用管道将连接件固定到
sed-r's/^M/^J/g'

注意: 我不能只键入“^M”,我必须按Ctrl+V和Ctrl+M/J来获得正确的字符

echo $(cmp -bl <(echo "$download") <(echo "http://www.curse.com/addons/wow/bagnon/704176"))
46 15 ^M 12 ^J