c++ - 不使用 echo 从 shell 脚本返回值

标签 c++ linux bash

我有一个包含 system 的 C++ 代码call 依次调用 bash oneliner

if (system("if [ `ls | wc -l` -eq 1 ]; then return 0 ; else return 1; fi") != 0)
    std::cout << "returned non zero" << std::endl;
else
    std::cout << "returned zero" << std::endl;

这不起作用,因为我收到此错误

-bash: return: can only `return' from a function or sourced script

如果我使用 echo 而不是 return,我会得到 echo 命令的返回代码,而不是传递给 echo 的值。知道如何解决这个问题吗?

最佳答案

你真的不需要返回,只需将你的代码更改为:

if ( system( "[ `ls | wc -l` -eq 1 ]" ) != 0)
    std::cout << "returned non zero" << std::endl;
else
    std::cout << "returned zero" << std::endl;

这段代码:

[ `ls | wc -l` -eq 1 ]

将根据条件返回 0 或 1,system 会将状态返回给您的 C++ 代码。

关于c++ - 不使用 echo 从 shell 脚本返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560969/

相关文章:

c++ - 扫描堆栈中的字符时遇到错误

linux - 创建postgres数据库时如何指定表空间?

c - asm/timex.h 和 get_cycles() 去哪儿了?

string - 删除变量开头和结尾的子字符串匹配模式

c++ - 将 std::string 转换为 uint16_t*

c++ - pData1 和 pData2 有什么区别,构建如下

linux - 什么 &| shell 里的意思?

bash - 使用 bash、Azure CLI 和 REST API 访问 CosmosDB - 如何正确获取 token 和哈希?

javascript - ubuntu 18.04- Ember : command not found

c++ - 哪些机器支持非确定性 random_device?