[英]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.