我正在尝试减少顶级函数的列并将其保存到文件中,但我不知道如何使用带引号的 system() 函数。我这样做是这样的:system("top -b n1 | grep \"^ \" | awk '{ printf(\"%s %s %s %s %s %s %s\n\", $1, $2, $8, $3, $9, $10, $12); }' >> file
我很确定问题出在引号上,有人可以帮助我吗?
最佳答案
问题不在于你的报价。首先,您缺少结束")
,并且我不确定您如何尝试使用变量 file
但看起来您正在将字符串与变量混合在一起。确保变量 file
当您将其添加到命令字符串时,它确实被用作变量。最后,您正在逃避 \n
错误的,这会弄乱你的输出。您应该转义该反斜杠,因此您需要输入 \\n
结束 \n
在你的 awk 命令中。
这应该有效:
string file = "test.txt";
system((string("top -b n1 | grep \"^ \" | awk '{ printf(\"%s %s %s %s %s %s %s\\n\", $1, $2, $8, $3, $9, $10, $12); }' >> ") + file).c_str());
关于c++ - 如何使用引号将参数传递给系统函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64648111/