小编Max*_*e.D的帖子

使用bash变量将多个标头传递给curl命令

我想curl用多个标题发出请求.解决方案是创建此命令:

curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue" ...
Run Code Online (Sandbox Code Playgroud)

我的目标是只使用一个变量和所有标题,如:

headers='-H "keyheader: value" -H "2ndkeyheader: 2ndvalue" '
curl $headers
Run Code Online (Sandbox Code Playgroud)

发送

curl -H "keyheader: value" -H "2ndkeyheader: 2ndvalue"
Run Code Online (Sandbox Code Playgroud)

目前,问题是:我可以使用'"声明我的字符串,但bash尝试运行之后"-H"作为参数然后回答:

command unknown
Run Code Online (Sandbox Code Playgroud)

想知道这里出了什么问题.

bash curl

6
推荐指数
1
解决办法
9586
查看次数

Google Protobuf:“mutable_foo()”或“set_allocated_foo()”?

我正在尝试使用 Google 的 protobuf。我使用 subMessage,我用随机值设置它并将 subMessage 存储在 mainMessage 中。以下是适合我的情况的示例消息:

message subMessage{
    required int32 val1= 1;
    required int32 val2= 2;
    required int32 val3= 3;
    required int32 val4= 4;
}

message mainMessage{
    required subMessage sub = 1;
}
Run Code Online (Sandbox Code Playgroud)

我的主要:

int main (int argc,char** argv){
    subMessage sM;
    mainMessage mM;
    sM.set_val1(10);
    sM.set_val2(9);
    sM.set_val3(8);
    sM.set_val4(7);
Run Code Online (Sandbox Code Playgroud)

然后我尝试:

mM.set_allocated_submessage(&sM);
Run Code Online (Sandbox Code Playgroud)

但它会导致程序结束时出现分段错误(对象的破坏?)。解决它的唯一方法是手动调用mM.release_submessage();.

我也试过:

*mM.mutable_submessage()=subMessage;
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我会出现分段错误,因为我的程序在此之后立即停止(在我的 subMessage 或我的 mainMessage 上没有任何访问/写入)。
根据谷歌的文档

void set_allocated_foo(Bar* bar):将 Bar 对象设置为该字段并释放前一个字段值(如果存在)。如果 Bar 指针不为 NULL,则消息获得分配的 Bar 对象的所有权,has_foo() 将返回 true。否则,如果 Bar 为 …

c++ protocol-buffers segmentation-fault

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

标签 统计

bash ×1

c++ ×1

curl ×1

protocol-buffers ×1

segmentation-fault ×1