c++ - 如何从 sh 脚本中获取`wget`的返回值到`int`变量中
问题描述
操作系统:Linux raspberrypi 4.19.58-v7l+ #1245 SMP Fri Jul 12 17:31:45 BST 2019 armv7l GNU/Linux Board:Raspberry Pi 4
我有一个脚本:
#!/bin/bash
line=$(head -n 1 /var/www/html/configuration.txt)
file=/var/www/html/4panel/url_response.txt
if [ -f "$file" ]; then
wget_output=$(wget -q -i "$line" -O $file --timeout=2)
echo "$?"
else
echo > $file
chown pi:pi $file
fi
我从一个 C++ 程序调用它,使用:
int val_system = 0;
val_system = system("/var/www/html/4panel/get_page.sh");
std::cout<<"System return value: "<<val_system<<std::endl;
如果脚本有问题,echo "$?"
将输出 的返回值wget
,但val_system
始终为 0。
是否system()
返回 的值echo "$?"
?在这种情况下,0 是正确的。如果是这种情况,我该如何输入wget
in的返回值val_system
?
我遇到了echo "$?"
总是返回 8 的情况,基本上我输入了一个不正确的 URL,并且:
- 我已经尝试删除
echo "$?"
但val_system
仍然返回 0; echo "$?"
删除后,我将行更改为wget
现在wget -q -i "$line" -O $file --timeout=2
返回val_system
2048。
我的尝试都没有结果,我来这里寻求指导。我怎样才能制造val_system
/system()
退货echo "$?"
?
如何wget
将脚本的返回值放入int
调用脚本的 C++ 程序内部的变量中?
解决方案
返回的整数值system()
包含有关已执行命令状态及其退出代码的额外信息,请参阅system()和Status Information。您需要使用WEXITSTATUS
宏提取退出代码,例如:
std::cout << "System return value: " << WEXITSTATUS(val_system) << std::endl;
推荐阅读
- python - Google CoLab - 如何运行我的 CoLab 环境的“文件”选项卡(即 /content/)中的 jupyter 笔记本文件
- angular - 如何使用 FileSaver.js 从 JSON 格式导出 Excel 文件并自动调整
- php - MySQL PHP - 返回列并将其拆分为 2 个数组
- python - 在 QGraphicsItem 上添加动画时遇到的一个问题
- opencv - decomposeProjectionMatrix 给出了意想不到的结果
- qt - 显示消息对话框
- c++ - 从头开始构建时会增加编译错误
- sql - 执行特定查询时的不同响应时间
- c# - (验证)在 MVC Post 中在一分钟内仅发布一条记录
- linux - 如何使用 exec 和 du 命令找出文件的大小