我不确定我是误会还是只是搜索不正确。但是,我有一个问题,我正在用一个简单的echo命令进行测试,并使用管道将sed替换为与$ SYNC匹配的一部分字符串,并替换为/ home / pi / sync
这是我用于测试的内容:
echo '$SYNC/somedirectory' | sed 's|"$SYNC"|"/home/pi/sync"|'
它不断回馈
$SYNC/somedirectory
据我了解,上述sed命令将用/ home / pi / sync替换$ 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信息。
我尝试了没有第二条sed命令的情况,但是Environment变量没有得到扩展,并且它返回没有此类目录的错误,例如:
$SYNC/mp3file.mp3 does not exist
但是当我用/home/pi/sync/mp3file.mp3手动替换$ SYNC时,它可以正常工作。
我对不使用sed的任何其他方式持开放态度,我只是认为sed是这样做的最简单方法。
我想出了答案,这是一个简单的错误,原因是我对shell缺乏经验
grep -w "file_path =" /home/pi/lightshowpi/config/state.cfg | sed 's/.*= //'| sed 's|'\$SYNC'|'/home/pi/sync'|' | xargs mp3info -p "%a"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句