2017-12-10 12 views
0

사라 ... 배쉬 출력

#!/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

당신이 DOS 줄을 사용하여 컬 문제로 실행하는 대부분의 경우 처음으로 커서를 반환하는 * 캐리지 리턴 *을 포함 종료 첫 번째 행을 다음 행으로 겹쳐 쓰게하는 행의 ('$ FILENAME'에서 캐리지 리턴을 얻은 것으로 의심됩니다.) –

+1

''curl' 결과에서'\ r' 문자를 제거해보십시오 :'FILENAME = "$ (curl $ CURL_OPTS $ URL | sed -r $ SED_REGEX | tr -d '\ r') "' – janos

+1

@ 그것을 일한 @janos! 질문에 대한 답변으로 의견을 게시하십시오! – Ricardo

답변

1

솔직히 질문에 이상한 디스플레이 오류를 재현하지 못했습니다. 나는 리눅스 셸에서 같은 코드를 돌렸다. 그러나 게시 된 코드 출력의 curl 요청이 변수 인 변수 인 의 내용으로 끝나는 DOS 줄 끝의 결과로 나타나면 이상한 결과가 발생할 수 있습니다.

잘못된 \r 문자를 제거하는 쉬운 방법은 사용하는 것입니다 tr :

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