Eu descobri a resposta, foi um erro simples devido à minha inexperiência com o shell
grep -w "file_path =" /home/pi/lightshowpi/config/state.cfg | sed 's/.*= //'| sed 's|'\$SYNC'|'/home/pi/sync'|' | xargs mp3info -p "%a"
Não tenho certeza se estou entendendo mal alguma coisa ou não estou pesquisando corretamente. No entanto, tenho um problema que estou testando com um comando echo simples e canalização para sed para substituir parte da string que corresponde a $ SYNC e substitui por / home / pi / sync
aqui está o que estou usando para teste:
echo '$SYNC/somedirectory' | sed 's|"$SYNC"|"/home/pi/sync"|'
continua a devolver
$SYNC/somedirectory
Eu entendi que o comando sed acima substituiria $ SYNC por / home / pi / sync
Eu vou usá-lo em parte de uma linha maior que segue:
grep -w "file_path =" /home/pi/lightshowpi/config/state.cfg | sed 's/.*= //'| (this is where I need to replace the $SYNC with /home/pi/sync) | xargs mp3info -p "%a"
Essencialmente, estou obtendo a linha com o caminho do arquivo e pegando tudo depois do '=' que retorna o arquivo $ SYNC / file.mp3 que eu posso enviar para mp3info para obter as informações do mp3.
Eu tentei sem um segundo comando sed, mas a variável Environment não foi expandida e ele retorna um erro de nenhum diretório como:
$SYNC/mp3file.mp3 does not exist
mas quando eu substituo o $ SYNC manualmente por /home/pi/sync/mp3file.mp3 ele funciona bem.
Estou aberto a qualquer outra maneira de fazer isso sem usar o sed, apenas imaginei que sed seria a maneira mais simples de fazer isso.