【发布时间】:2018-05-24 03:15:47
【问题描述】:
运行以下 bash 脚本时...
#!/bin/bash
ATTEMPTS=3
DEST_DIR="/opt/satnet"
ATTEMPTS=3
URL="https://github.com/google/snappy/tarball/master"
CURL_OPTS='-sIkL'
SED_REGEX='/filename=/!d;s/.*filename=(.*)$/\1/'
FILENAME="$( curl $CURL_OPTS $URL | sed -r $SED_REGEX )"
DEST_FILE="$DEST_DIR/$FILENAME"
printf "\t* URL = %s\n" $URL
printf "\t* Remote tarball filename = %s\n" $FILENAME
WGET_BIN='wget'
WGET_OPTS_1="-t $ATTEMPTS -c -O $DEST_FILE"
WGET_OPTS="-t $ATTEMPTS -c -O $DEST_FILE $URL"
printf "\t* wget opts 1 = %s\n" "$WGET_OPTS_1"
printf "\t* wget opts = %s\n" "$WGET_OPTS"
echo " * wget opts 1 = $WGET_OPTS_1"
echo " * wget opts = $WGET_OPTS"
... 第二个变量的输出应该包括第一个变量的输出加上 URL;但是,它只显示 URL,甚至不显示 URL 之前的字符串部分:
* URL = https://github.com/google/snappy/tarball/master
* Remote tarball filename = google-snappy-1.1.7-0-gb02bfa7.tar.gz
* wget opts 1 = -t 3 -c -O /opt/satnet/google-snappy-1.1.7-0-gb02bfa7.tar.gz
https://github.com/google/snappy/tarball/mastergle-snappy-1.1.7-0-gb02bfa7.tar.gz
* wget opts 1 = -t 3 -c -O /opt/satnet/google-snappy-1.1.7-0-gb02bfa7.tar.gz
https://github.com/google/snappy/tarball/mastersnappy-1.1.7-0-gb02bfa7.tar.gz
就好像,由于某种原因,添加 URL “删除”了字符串的初始部分。
我做错了什么?
【问题讨论】:
-
您很可能会遇到使用 DOS 行尾包含 回车 的 curl 问题,这会将光标返回到行首,从而导致第一行被覆盖下一个。 (我怀疑你在
$FILENAME中捕获了回车) -
尝试从
curl的结果中删除\r字符:FILENAME="$( curl $CURL_OPTS $URL | sed -r $SED_REGEX | tr -d '\r' )" -
@janos 成功了!请发表您的评论作为问题的答案!
标签: linux bash shell curl wget