O comando simples antes do pipe em:
OPTIONS=$VERSIONS | awk -F'[,]' '{print $1}'
define OPTIONS para $VERSIONS . Como não há nenhum nome de utilitário real, o comando é simplesmente uma atribuição e, portanto, não produz saída. Portanto, nada é canalizado para awk e, consequentemente, awk não faz nada. (E mesmo se fizesse alguma coisa, não faria isso para $OPTIONS .
Ainda pior, o pipe garante que tanto o comando antes quanto o comando após sejam executados em subshells. Portanto, OPTIONS não está definido no shell que contém o comando composto.
Eu presumo que o que você queria era algo assim:
OPTIONS=$(/usr/libexec/somebin -V | cut -f1 -d,)
ou talvez
VERSIONS=$(/usr/libexec/somebin -V)
OPTIONS=$(echo "$VERSIONS" | cut -f1 -d,)
em que o comando cut faz exatamente a mesma coisa que sua invocação de awk .
Mas nem isso nem seu comando awk filtrarão as linhas com "algum texto", então talvez você precise de um filtro real, talvez algo assim:
VERSIONS=$(/usr/libexec/somebin -V | grep ,)
OPTIONS=$(echo "$VERSIONS" | cut -f1 -d,)