Parece que você quer algo como:
#!/bin/bash -
# lat/lon passed as arguments to the script instead of being input to the
# user:
lat=${1?} lon=${2?}
while read alpha dist ignore; do
printf '%s\n' "$lat $lon $alpha $dist" >&3
read lat lon ignore < <(
printf '%s\n' "$lat $lon $alpha $dist" | GeodSolve 3>&-)
printf '%s\n' "$lat $lon"
done < azi_dist_file 3> lat_lon_azi_dist_file
O read vars < <(cmd)
é para contornar o fato de que, em bash
(ao contrário de zsh
ou AT & T ksh
) em cmd | read vars
, o comando read
é executado em um subshell. Como alternativa, com versões recentes de bash
, você pode usar shopt -s lastpipe
para que bash
se comporte como zsh
ou ksh
neste caso.
POSIXly, você também pode usar:
unset -v IFS; set -f; set -- $(cmd); lat=$1 lon=$2