我有一个包含 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/