簡體   English   中英

Bash腳本和curl:如何在同一命令中獲取狀態代碼和內容並存儲在var中

[英]Bash script and curl: how to get status code and content and store in var in same command

例如,在PHP或Python中,您可以卷曲並接收具有組織的所有屬性的對象。

在bash中,我必須調用curl應用程序。

我需要在同一命令中獲取狀態代碼和內容(這很明顯,因為狀態代碼與成功有關,或者與獲取內容無關)。 但是我該怎么做呢?

我正在嘗試:

# get url in function
urlcurl=$(echo $@)
# create new file descriptor and redirect to STDOUT
exec 3>&1
# get curl status code and store in curlstatuscode
curlstatuscode=$(curl -L -k -w "%{http_code}" -o >(cat >&3) --silent \"${urlcurl}\")

我的問題是關於內容的:當我在終端中執行此操作時,我會在STDOUT中收到內容(這是命令所要做的)。 但是我試圖使用常規重定向表達式存儲此STDOUT,但它們不起作用。

一個例子:

exec 3>&1
HTTP_STATUS=$(curl -k --silent -L -w "%{http_code}" -o >(cat >&3) 'http://example.com')
echo $HTTP_STATUS

如果您不了解我要執行的操作,則大致模式(無效)將是這樣的:( 我知道那是無效的,我只想澄清一下)

HTTP_CONTENT=$(echo `HTTP_STATUS=$(curl -k --silent -L -w "%{http_code}" -o >(cat >&3) 'http://example.com'`)

HTTP_CONTENT將獲取內容,而HTTP_STATUS將獲取curl狀態代碼。

請不要對用戶說另一種語言。 我需要解決這個問題。 用其他語言(主要是面向對象)執行此操作非常簡單。 我真的很想這樣做。

謝謝!

由於http狀態是curl輸出的最后一行,因此可以在BASH中執行以下操作:

out=$(curl -k --silent -L -w "\n%{http_code}" 'minecraft.net/haspaid.jsp?user=apterixbr')
http_status="${out##*$'\n'}"
http_content="${out%$'\n'*}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM