Bash输出消失

时间:2017-12-10 12:09:19

标签: linux bash shell curl wget

运行以下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添加到字符串的初始部分。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

说实话,我无法像你的问题那样重现奇怪的显示错误。我在Linux shell中运行相同的代码,它显示得很好。 但我可以确认发布的代码输出中的curl请求结果是DOS行结尾, 最终在FILENAME变量的内容中, 这反过来可能会导致您遇到奇怪的输出。

删除有问题的\r字符的简便方法是使用tr

FILENAME="$( curl $CURL_OPTS $URL | sed -r $SED_REGEX | tr -d '\r' )"