私が何かを間違って理解したのか、それとも検索が間違っているのかわかりません。しかし、問題があります。 $ SYNCに一致する文字列部分を置き換えるには、単純なechoコマンドとsedのパイピングを使用してテストし、それを/home/pi/syncに置き換えます。
私がテストした内容は次のとおりです。
echo '$SYNC/somedirectory' | sed 's|"$SYNC"|"/home/pi/sync"|'
それはずっと返すんだ
$SYNC/somedirectory
私が理解したところ、上記のsedコマンドは$ SYNCを/home/pi/syncに置き換えます。
次のように大きな線で使用します。
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"
デフォルトでは、ファイルパスを含む行を取得し、「=」の後のすべてのエントリを取得し、$ SYNC / file.mp3を返します。その後、mp3infoにパイプしてmp3情報を取得できます。
2番目のsedコマンドなしで試しましたが、環境変数が拡張されず、そのディレクトリがないというエラーが返されます。例:
$SYNC/mp3file.mp3 does not exist
ただし、$ SYNCを/home/pi/sync/mp3file.mp3に手動で置き換えると正常に動作します。
私はsedを使用せずに他の方法を使用できます。 sedが最も簡単な方法になると思います。
ベストアンサー1
答えを見つけました。シェルの経験が足りなかったために発生した単純な間違いでした。
grep -w "file_path =" /home/pi/lightshowpi/config/state.cfg | sed 's/.*= //'| sed 's|'\$SYNC'|'/home/pi/sync'|' | xargs mp3info -p "%a"