No Linux, você pode fazer:
filetypes=( $(grep -Po 'FILETYPE=\K.*' ${CONF_FILE} | tr ':' ' ') )
Ou mais idiomático:
IFS=":" filetypes=( $(grep -Po 'GPGDIRLIST=\K.*' file))
Observe que usei letras minúsculas para o nome da matriz, que geralmente é mais seguro, pois as variáveis ambientais geralmente são capitalizadas. A maneira de salvar a saída de um comando como uma matriz é:
array=( 'command' )
ou
array=( $( command) )
Em seguida, o comando em si é grep
com expressões regulares compatíveis com Perl ( -P
), elas nos fornecem \K
, o que significa "descartar qualquer correspondência correspondente a este ponto. O -o
causa grep
somente imprima a parte correspondente da linha e, combinada com \K
, faz com que seja impressa apenas A:B:C:D
aqui. Finalmente, tr
substitui a :
por espaços que permitem ao shell interpretar o resultado como uma matriz:
$ echo ${filetypes[0]}
A
$ echo ${filetypes[3]}
D