2013-11-25 15 views
13

Tôi đang cố gắng này:Di% 0D từ biến trong BASH

token=`curl -I --header "X-Auth-User: [email protected]" --header "X-Auth-Key: XXXXXXXXXXXXXXXXXXXXXX" api.server.com | grep -Fi X-Auth-Token | awk -F" " '{ print $2}'` 

/usr/bin/wget --accept .jpg,.jpeg -p "https://api.server.com/v1/stats/1/graph?callback=jQuery171027000000144289315_1380000003353&mnum=1&res_type=cpu&g_type=6h&graph_type=img&full=1&w=515&h=150&X-Auth-Token=$token" -O "image.jpg" || rm "image.jpg" 

Nhưng kết quả thẻ của tôi là:

https://api.server.com/v1/stats/1/graph?callback=jQuery171027000000144289315_1380000003353&mnum=1&res_type=cpu&g_type=6h&graph_type=img&full=1&w=515&h=150&X-Auth-Token=SERVER_018d8100000000001d1b817f7d58a6%0D 

Thay vì:

https://api.server.com/v1/stats/1/graph?callback=jQuery171027000000144289315_1380000003353&mnum=1&res_type=cpu&g_type=6h&graph_type=img&full=1&w=515&h=150&X-Auth-Token=SERVER_018d8100000000001d1b817f7d58a6 

Làm thế nào để loại bỏ% 0D (Vận chuyển trở lại)?

Trả lời

24

Bạn có thể thêm | tr -d '\r' vào đường ống cong của mình để loại bỏ bất kỳ khoản trả lại vận chuyển nào.

+1

Cách tôi đọc này, đó là máy chủ gửi có chức năng trả về vận chuyển được mã hóa bằng URL. Vì vậy, không có CR phía máy khách để cắt. – tripleee

+0

@tripleee Việc vận chuyển trở lại được thực hiện từ phản hồi HEAD curl vào url, và wget url mã hóa nó. Bạn có thể thấy cả hai hiệu ứng với 'curl -I google.com | cat -v' và 'wget $ 'http: //google.com/ \ r'' –

+0

Thông tin thêm về TR tại đây: http://pubs.opengroup.org/onlinepubs/009695399/utilities/tr.html –

1

Có một tiện ích gọi là dos2unix. Bạn có thể phải cài đặt nó. hoặc sử dụng các dịch

tr -d '\r' <input> output 

EDIT Tìm thấy một bài thảo luận về một vài lựa chọn: Remove carriage return in Unix

0

tôi giải quyết nó bằng đường ống để sed. Tôi đã sử dụng sed trong đường ống của tôi để nó có ý nghĩa.

cmd | sed 's/\r//g'