Tôi đang cố gắng tạo một kịch bản sẽ bắt đầu nhiều lệnh nền. Đối với mỗi lệnh nền tôi cần lấy mã trả về.
Tôi đã thử đoạn script sau:
#!/bin/bash
set -x
pid=()
return=()
for i in 1 2
do
echo start $i
ssh mysql "/root/test$i.sh" &
pid[$i]=$!
done
for i in ${#pid[@]}
do
echo ${pid[$i]}
wait ${pid[$i]}
return[$i]=$?
if [ ${return[$i]} -ne 0 ]
then
echo mail error
fi
done
echo ${return[1]}
echo ${return[2]}
Vấn đề của tôi là trong vòng chờ, nếu lần thứ hai kết thúc trước lần thứ nhất, tôi sẽ không thể lấy được mã trả về.
Tôi biết rằng tôi có thể chạy Wait pid1 pid2, nhưng với lệnh này, tôi không thể nhận được mã trả về của tất cả các lệnh.
Bất kỳ ý tưởng ?