bash - 以冒号作为分隔符的通配符/路径名扩展

标签 bash shell path glob expansion

如何转换包含 glob 字符的字符串,例如

/var/lib/gems/*/bin

转换为与模式匹配的以冒号分隔的文件名字符串(即与 PATH 兼容)?

echo/var/lib/gems/*/bin 将返回

/var/lib/gems/1.8/bin /var/lib/gems/1.9.1/bin

我要

/var/lib/gems/1.8/bin:/var/lib/gems/1.9.1/bin 

相反。

显而易见的方法是通过 tr 将空格字符替换为“:”,但如果文件名本身包含空格字符,则此方法无效。

最佳答案

其实我想到了更好的解决方案:使用shell函数。

function join() {
    local IFS=$1
    shift
    echo "$*"
}

mystring=$(join ':' /var/lib/gems/*/bin)

关于bash - 以冒号作为分隔符的通配符/路径名扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430569/

相关文章:

macos - 管道和正则表达式 bash 输出

python - 安装了python3,在终端中找不到命令错误

path - 如何在 sed 中将一个路径替换为另一个路径?

bash - 什么时候使用带有选项 -c 的 bash?

bash - 提示用户输入并在等待 x 秒后取消提示

linux - 有什么办法可以保留文件名(+日期小时)

linux - 在运行时编辑 shell 脚本

linux - 维护用于生产的嵌入式 Linux 系统配置的最佳实践

linux - 对文件夹中的所有文件运行命令的 Bash 脚本失败

html - 圆形曲线的剪辑路径选项?