Bom dia shelleiros,
Estou usando fifos para paralelizar processos e dispará-los "simultaneamente", porém me deparei com um erro interessante. Se faço a atribuição de fd da maneira como está no script, acusa um erro de descritor inválido apesar de fd receber a string 10 de forma geral. Se eu deixar a atribuição de fd apenas pelo exec ou definí-la manualmente como fd=10, o script corre bem. Alguém poderia explicar o q ocorre com esses descritores em variáveis?
#!/bin/bash
function Fifo.init() {
fifo=$(mktemp -u)
mkfifo $fifo
exec {fd}<>$fifo
procs[$fd]=$fifo
echo "$fd"
}
function Ip.check() {
fd=$(Fifo.init)
for ip; do
(stdout=$(ping -H $ip); echo "$ip|$?|$stdout";) >&$fd &
done
wait
for ((i=0;i<$#;i++)); do
read -u $fd
echo "$REPLY"
done
rm ${procs[@]}
}
Ip.check "${hostaddress[@]}"
Atenciosamente,
Robson Alexandre