php -i | sed -n '/extension_dir/{s/^[^/]*//;s/ *=>.*$//;p;}'
ou, como sugerido nos comentários abaixo,
php -i | sed '/extension_dir/!d;s/[^/]*//;s/ *=>.*//'
O sed
acima substitui seu grep
e, para cada linha que corresponda a extensions_dir
, primeiro removerá tudo até o primeiro /
e depois tudo, desde o primeiro =>
no modificada string. Todos os espaços antes do =>
também são removidos. As linhas que não correspondem a extensions_dir
são ignoradas.
Isso retornará o caminho desejado para a primeira linha de entrada e uma linha vazia para o segundo.
Para desconsiderar a segunda linha de entrada, use /^extension_dir/
em vez de /extension_dir/
no sed
acima. Isso descartará a segunda linha, pois não inicia com essa string.
É a combinação de seus dois scripts sed
que produz o resultado surpreendente para a segunda linha de entrada.
A linha é
sqlite3.extension_dir => no value => no value
e o primeiro sed
modificará isso para
sqlite3.no value => no value
O segundo sed
removerá o bit => no value
no final.
Note que
echo $( ... )
é um pouco inútil, pois engole as novas linhas na saída do comando dentro de $( ... )
. Em vez disso teste com apenas o comando sem a substituição do comando echo
ou $( ... )
.
É possivelmente esse uso de echo
que você confundiu sobre a natureza da saída de php -i
e grep
(duas linhas de correspondência em vez de uma).