gpt4 book ai didi

c++ - 如何从 sh 脚本获取 `wget` 的返回值到 `int` 变量

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:34 25 4
gpt4 key购买 nike

操作系统:Linux raspberrypi 4.19.58-v7l+ #1245 SMP Fri Jul 12 17:31:45 BST 2019 armv7l GNU/Linux开发板:树莓派 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 的返回值放入 val_system 中?

我遇到过 echo "$?" 总是返回 8 的情况,基本上我输入了错误的 URL 并且:

  • 我已经尝试删除 echo "$?"val_system 仍然返回 0;
  • 删除 echo "$?" 后,我将 wget 行更改为 wget -q -i "$line"-O $file --timeout =2val_system 现在返回 2048。

我的尝试都没有结果,我来这里寻求指导。如何让 val_system/system() 返回 echo "$?" 返回的内容?

如何从脚本中获取 wget 的返回值到调用脚本的 C++ 程序中的 int 变量?

最佳答案

返回的整数值 system() 包含有关已执行命令状态及其退出代码的额外信息,请参阅 system()Status Information .您需要使用 WEXITSTATUS 宏提取退出代码,例如:

std::cout << "System return value: " << WEXITSTATUS(val_system) << std::endl;

关于c++ - 如何从 sh 脚本获取 `wget` 的返回值到 `int` 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57971141/

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