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)