Você pode fazer isso apenas com construções de shell: leia os dados em uma variável e, em seguida, divida essa variável nos caracteres em $IFS
(espaço em branco por padrão) e mantenha os fragmentos desejados. Uma substituição de variável fora de aspas duplas sofre a divisão de palavras (que queremos aqui) e a geração de nome de arquivo (a.k.a. globbing, que não queremos), portanto, desative a globbing com set +f
primeiro.
set +f
for x in $(cat /path/to/file); do
case "$x" in
foo=*) echo "${x#*=}";;
esac
done
set -f
Em vez de chamar cat
, você pode usar o read
builtin.
set +f
read -r line </path/to/file
for x in $line; do …