outFile"; c-6ren">
gpt4 book ai didi

c - 系统 api 调用中的 echo 命令不带\n?

转载 作者:行者123 更新时间:2023-11-30 19:57:18 24 4
gpt4 key购买 nike

#include <stdio.h>
#include<stdlib.h>


void echoIt()
{
char* cmd_1 = "echo -ne {\"key\":\"value\"} > outFile";
char* cmd_2 = "echo -ne ,{\"key1\":\"value1\"} >> outFile";

system(cmd_1);
system(cmd_2);
}

int main(int argc, char **argv)
{
echoIt();
}

输出有2行,选项-ne是删除也出现在outFile中的\n

root@userx:/home/userx/work/lab/test# cat outFile 

-ne {key:value}
-ne ,{key1:value1}

预期结果在同一行:

{key:value} ,{key1:value1}

如何获取?

最佳答案

我相信你的话,你有一个具体的原因为什么必须使用子 shell,而不是直接打开文件。 echo-n-e 选项不是可移植 shell 规范的一部分。通常,它们在您习惯使用的交互式 shell 中工作,但不能在用于解释系统命令行的非交互式 shell 中工作。

在现代(2001 年后)操作系统上,最好使用 printf 而不是 echo:

system("printf '%s' '{\"key\":\"value\"}' > outFile");
system("printf '%s' ',{\"key\":\"value\"}' >> outFile");

会做你想做的事。如果您确实想要在字符串后添加换行符,printf 只能在其第一个参数中理解 C 风格的反斜杠转义:

system("printf '%s\\n' ',{\"key\":\"value\"}' >> outFile");

请密切注意所有这些示例中的引用。

关于c - 系统 api 调用中的 echo 命令不带\n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com