Isso não funciona porque o read
é executado em um processo filho que não pode afetar o ambiente do pai.
Você tem algumas opções:
Você pode converter seu comando para:
w1=$(echo "one two three four" | awk '{print $2}')
w2=$(echo "one two three four" | awk '{print $4}')
Como alternativa, altere o IFS e use set
:
OIFS="$IFS"
IFS=' '
set -- $(echo "one two three four" | awk '{print $2" "$4}')
IFS="$OIFS"
w1=$1 w2=$2
ou uma string aqui:
read w1 w2 w3 w4 <<< "one two three four"