Em vez de usar grepping, use apenas cut
. Vai ser muito mais rápido do que executar um regex completo.
STRING="upgrade http://wordpress.org/download/ http://wordpress.org/wordpress-3.0.5.zip 3.0.5 en_US 4.3 4.1.2"
echo "$STRING" | cut -d" " -f4
Saídas: 3.0.5
Isso pode ser um pouco mais robusto embora (é pegar a versão do zip url):
echo "$STRING" | sed -n -e 's/.*wordpress-\(.*\)\.zip.*//p'
Se você quiser armazená-lo de volta em uma variável bash, apenas coloque entre aspas e backticks. A parte backticked será executada primeiro, deixando-a como uma string.
RESULT="'echo "$STRING" | sed -n -e 's/.*wordpress-\(.*\)\.zip.*//p''"
Então, até onde tira isso (por seu comentário) para procurar upgrade
no começo:
STRING="upgrade http://wordpress.org/download/ http://wordpress.org/wordpress-3.0.5.zip 3.0.5 en_US 4.3 4.1.2"
if [[ $STRING == upgrade* ]]; then
VERSION="'echo "$STRING" | sed -n -e 's/.*wordpress-\(.*\)\.zip.*//p''"
# do something else now
else
# do something if this isn't an upgrade (optional)
fi