小编mkc*_*zyk的帖子

通过 curl 获取响应正文并显示 HTTP 代码

我有返回 JSON(响应正文)的端点。我需要通过 curl 响应主体并对其进行处理(例如使用 jq)。有用:

response=$(curl -s https://swapi.co/api/people/1/?format=json)
name=$(echo $response tmpFile | jq '.name') # irrelevant command, but I need here response body
echo "name:"$name
Run Code Online (Sandbox Code Playgroud)

但我还需要显示 HTTP 代码(以显示请求是否成功):

curl -s -w "%{http_code}\n" -o /dev/null https://swapi.co/api/people/1/?format=json
Run Code Online (Sandbox Code Playgroud)

如何将响应主体设置为变量并同时显示 HTTP 代码(一个请求)?


我找到了解决方案女巫临时文件:

touch tmpFile
curl -s -w "%{http_code}\n" -o tmpFile https://swapi.co/api/people/1/?format=json
name=$(cat tmpFile | jq '.name') # irrelevant command, but I need here only body response
echo "name: "$name
rm tmpFile
Run Code Online (Sandbox Code Playgroud)

不创建文件怎么办?

我尝试使用命名管道(但它仍然需要在磁盘上创建文件...):

mkfifo tmpFifo
curl -s -w "%{http_code}\n" -o tmpFifo https://swapi.co/api/people/1/?format=json
name=$(cat …
Run Code Online (Sandbox Code Playgroud)

bash curl pipe

14
推荐指数
2
解决办法
8万
查看次数

在bash函数中打印echo和返回值

我想在函数中打印 echo 并返回值。它不起作用:

function fun1() {
    echo "Start function"
    return "2"
}

echo $(( $(fun1) + 3 ))
Run Code Online (Sandbox Code Playgroud)

我只能打印回声:

function fun1() {
    echo "Start function"
}

fun1
Run Code Online (Sandbox Code Playgroud)

或者我只能返回值:

function fun1() {
    echo "2" # returning value by echo
}

echo $(( $(fun1) + 3 ))
Run Code Online (Sandbox Code Playgroud)

但我不能两者兼得。

bash

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×2

curl ×1

pipe ×1