通配/路径扩展结肠癌作为分隔符 [英] Globbing/pathname expansion with colon as separator

查看:143
本文介绍了通配/路径扩展结肠癌作为分隔符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎么可以转换包含水珠字符的字符串,如

 的/ var / lib中/宝石/ * /箱

成文件名的冒号分隔字符串(即PATH兼容)匹配模式?

即。 回声的/ var / lib中/宝石/ * /斌将返回

  /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函数

 功能连接(){
    当地IFS = $ 1
    转移
    回声$ *
}myString的= $(加入':'在/ var / lib中/宝石/ * / bin中)

How can I convert a string containing glob characters such as

/var/lib/gems/*/bin

into a colon-separated string of filenames (i.e. PATH compatible) matching the pattern?

i.e. echo /var/lib/gems/*/bin will return

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

I want

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

instead.

The obvious approach is simply to replace the space character with ':' via tr, but that doesn't work if the filename itself contains the space character.

解决方案

Actually, I thought of a better solution: use a shell function.

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

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

这篇关于通配/路径扩展结肠癌作为分隔符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆