[英]How can I get the return value of `wget` from a sh script into an `int` variable
操作系统:Linux raspberrypi 4.19.58-v7l +#1245 SMP Fri Jul 12 17:31:45 BST 2019 armv7l GNU / Linux开发板: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 "$?"
的值echo "$?"
? 在这种情况下,0是正确的。 如果是这种情况,如何将wget
的返回值放在val_system
?
我遇到了echo "$?"
总是返回8,基本上我输入的网址不正确,并且:
echo "$?"
但是val_system
仍然返回0; echo "$?"
删除我将wget
行更改为wget -q -i "$line" -O $file --timeout=2
并且val_system
现在返回2048。 我的尝试都没有结果,我来这里寻求指导。 如何使val_system
/ system()
返回什么echo "$?"
回报?
如何从脚本中获取wget
的返回值到调用脚本的C ++程序内部的int
变量中?
返回的整数值system()
包含有关已执行命令的状态以及其退出代码的其他信息,请参见system()和Status Information 。 您需要使用WEXITSTATUS
宏提取退出代码,例如:
std::cout << "System return value: " << WEXITSTATUS(val_system) << std::endl;
如果要回显状态并返回状态,则需要保存$?
的值$?
变量,然后显式退出。
wget_output=$(wget -q -i "$line" -O $file --timeout=2)
status=$?
...
echo $status
...
exit $status
如果您不需要在对wget
的调用与脚本结尾之间执行echo
或任何其他命令,则可以依靠隐式退出具有最后一个状态(即与`wget调用相对应的状态)的脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.