Tôi đang cố gắng thực thi một tập lệnh thực thi một tập lệnh EXPECT và một quá trình sinh ra có mã thoát trong đó. Nhưng tôi không thể lấy mã thoát của quá trình sinh ra thành tập lệnh chính. Tôi luôn nhận được không thành công.Làm cách nào để lấy mã thoát của quá trình sinh ra trong kịch bản shell mong đợi?
mong đợi kịch bản là:
[Linux Dev:anr ]$ cat testexit.sh
#!/bin/bash
export tmp_script_file="/home/anr/tmp_script_temp.sh"
cp /home/anr/tmp_script $tmp_script_file
chmod a+x $tmp_script_file
cat $tmp_script_file
expect << 'EOF'
set timeout -1
spawn $env(tmp_script_file)
expect {
"INVALID " { exit 4 }
timeout { exit 4 }
}
EOF
echo "spawned process status" $?
rm -f $tmp_script_file
echo "done"
script Sinh ra:
[Linux Dev:anr ]$ cat tmp_script
exit 3
Thi hành Mong đợi kịch bản:
[Linux Dev:anr ]$ ./testexit.sh
exit 3
spawn /home/anr/tmp_script_temp.sh
spawned process status 0
done
Vấn đề là tôi không thể lấy mã lối ra trở lại sinh ra để mong đợi kịch bản. Tôi muốn mã lối ra 3 kịch bản sinh ra để kịch bản chính và kịch bản chính nên thoát với mã exit 3.
Xin hãy giúp tôi để lấy mã thoát sinh ra để kịch bản chính.
Thử đặt phần mong muốn vào một tệp riêng biệt, tức là tập lệnh mong đợi thực thi và thử và thoát trạng thái thoát. – PradyJord
@ Jord, tôi phải viết phương thức mong đợi chỉ trong kịch bản lệnh shell. Nó không nên được thực thi riêng biệt. – ANR
Tôi nhận được một số câu trả lời từ: [link] (https://stackoverflow.com/questions/3299502/how-to-return-spawned-process-exit-code-in-expect-script) nhưng không thể thâm nhập vào giải pháp đó ma cua toi. Tôi là con ong mới cho phương pháp mong đợi. – ANR