Tôi làm cách nào để lấy mã thoát của wget
từ quá trình bán vỏ?Lấy mã thoát từ subshell qua các đường ống
Vì vậy, vấn đề chính là $?
bằng 0. Ở đâu có thể $?=8
được thành lập?
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "$?"
0
Nó hoạt động mà không cần tee
.
$> OUT=$(wget -q "http://budueba.com/net"); echo "$?"
8
Nhưng ${PIPESTATUS}
mảng (Tôi không chắc chắn nó liên quan đến trường hợp đó) cũng không chứa giá trị đó.
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "${PIPESTATUS[1]}"
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "${PIPESTATUS[0]}"
0
$> OUT=$(wget -q "http://budueba.com/net" | tee -a "file.txt"); echo "${PIPESTATUS[-1]}"
0
Vì vậy, câu hỏi của tôi là - làm thế nào tôi có thể nhận wget
's mã thoát qua tee
và subshell?
Nếu có thể hữu ích, phiên bản bash của tôi là 4.2.20
.
Nhưng là nó có thể xuất khẩu tất cả {PIPESTATUS} 'mảng' $ lên vào shell mẹ? –
Đó không phải là cách hoạt động của ['export'] (http://www.gnu.org/software/bash/manual/bashref.html#Environment) - nó xuất các biến làm biến môi trường cho các tiến trình * child * (từ bố mẹ). –
Đây là một [giải pháp để đưa toàn bộ mảng '$ {PIPESTATUS [@]}' vào tập lệnh gốc] (https://stackoverflow.com/questions/41716616/get-exit-codes-of-a-pipe- khi-đầu ra-được-giao-để-biến-lệnh-thay thế/44314883 # 44314883). Nó liên quan đến việc thêm nó vào cuối biến được tạo ra và sau đó kéo nó vào một mảng mới. –