我认为这是一个微不足道的问题,我希望将输出转换为PKG_CONFIG_PATH环境变量。我无法理解为什么以下bash片段失败:
PKG_CONFIG_PATH=`find /usr/loc* /usr/X11 -name pkgconfig`
PKG_CONFIG_PATH=${PKG_CONFIG_PATH// /:}
我想这不是一个分隔不同字符串的空间。但它是什么?经过大量的搞乱后,我最终得到了:
PKG_CONFIG_PATH=`echo $(find /usr/loc* /usr/X11 -name pkgconfig ) | sed 's/ /:/g'`
哪个有效,但我觉得它很丑陋而且很笨拙。有什么改进吗?
答案 0 :(得分:3)
您可以告诉GNU find
直接使用冒号,然后使用任何POSIX shell中可用的参数扩展修剪它:
PKG_CONFIG_PATH=$(find /usr/loc* /usr/X11 -name pkgconfig -printf '%p:')
PKG_CONFIG_PATH=${PKG_CONFIG_PATH%:} # trim last colon
...或正确替换find
输出中的换行符(请注意,这是纯POSIX shell中不可用的扩展语法):
PKG_CONFIG_PATH=$(find /usr/loc* /usr/X11 -name pkgconfig)
PKG_CONFIG_PATH=${PKG_CONFIG_PATH//$'\n'/:}