非常抱歉问一个愚蠢的问题,但是我对此事感到疯狂。
所以,我在bash中,并且有一些文件:
FM
我要做的就是创建一个变量,将所有三个变量用逗号分隔,这是我搜索的输出:
const check = () => {
if (!context) {
throw new Error("No context");
}
};
export function getEnvironment() {
try {
check();
return context.getEnvInfo().environment;
} catch (e) {
}
}
我现在正在使用的内容(但是有空格而不是逗号):
ls
a.bed
b.bed
c.bed
有
a.bed, b.bed, c.bed
非常感谢您
答案 0 :(得分:7)
我将使用printf
及其-v
选项,然后使用参数扩展。
$ printf -v beds '%s, ' *.bed
$ beds=${beds%, }
第一行产生a.bed, b.bed, c.bed,
。第二行修剪尾随,
。
如果只需要单字符分隔符,则可以选择使用带有IFS
的数组:
$ beds=$(a=(*.bed); IFS=,; echo "${a[*]}")
答案 1 :(得分:6)
您可以单独使用ls的'x'和'm'选项:
beds=$(ls -xm *.bed)
echo $ beds
a.bed,b.bed,c.bed
答案 2 :(得分:0)
这里有些古怪:
beds=$( tr \ , <<< $(ls *.bed))
在上面的示例中,仅通过用ls
执行即可消除$()
输出中的换行符。然后,我们将结果字符串用作tr
的输入,它用逗号替换所有空格。
我最喜欢的是在ls中使用内置的-xm参数,但是这个特定答案可以应用于其他不提供ls
丰富输出格式的可执行文件。
答案 3 :(得分:0)
针对此特定情况的过大杀伤力,但就像您仅供参考:
$ bedsArr=( *.bed )
$ bedsStr=$( printf '%s, ' "${bedsArr[@]:0:$((${#bedsArr[@]} - 1))}"; printf "%s\n" "${bedsArr[@]: -1:1}" )
$ printf '%s\n' "$bedsStr"
a.bed, b.bed, c.bed