Use a sintaxe de substituição de processo moderna do Bash $( ... )
ou a substituição do processo antigo somente com backticks ' ... '
:
SERVERS=$( $COMMAND $ARGUMENTS | awk -F "commit-sha = " '{ print $2 }' )
O que você escreveu com (' ... ')
executa o código dentro dos backticks e então cria uma lista / array (é o que os parênteses fazem) de suas palavras. Se você tentar ler a variável array como uma normal, você só terá o primeiro elemento array de volta. Para obter os outros, você teria que especificar um índice.
$ text=(few words in here)
$ echo $text
few
$ echo ${text[1]}
words
Eu também diria que, nesse caso de uso, grep
com uma visão geral provavelmente é uma solução mais direta, embora sua tentativa com awk
também esteja correta. É principalmente uma questão de gosto, eu acho, mas aqui está o que eu escreveria:
SERVERS=$( $COMMAND $ARGUMENTS | grep -Po '(?<=commit-sha = )\w+' )
Nota: eu substituí os nomes das variáveis originais por nomes mais curtos para que os comandos se ajustassem bem em uma linha.