我想要
$ echo a{b,c,d}
Run Code Online (Sandbox Code Playgroud)
输出一个逗号分隔的列表,如
ab,ac,ad
Run Code Online (Sandbox Code Playgroud)
而不是通常的输出
ab ac ad
Run Code Online (Sandbox Code Playgroud)
在命令行上执行此操作的最简单方法是什么?
gle*_*man 16
bash 似乎没有使用 $IFS 来加入生成的单词。另一种技术是将生成的单词存储在一个数组中,然后 $IFS将起作用:
我将使用一个子shell,所以我不会改变这个shell的IFS:选择一个
( words=( a{b,c,d} ); IFS=,; echo "${words[*]}" )
( set -- a{b,c,d}; IFS=,; echo "$*" )
Run Code Online (Sandbox Code Playgroud)
将逗号分隔的字符串发送到标准输出。如果你想捕捉它:
joined=$( set -- a{b,c,d}; IFS=,; echo "$*" )
Run Code Online (Sandbox Code Playgroud)
dev*_*ull 15
假设元素不包含空格,您可以将空格转换为逗号:
echo a{b,c,d} | tr ' ' ,
Run Code Online (Sandbox Code Playgroud)
它产生:
ab,ac,ad
Run Code Online (Sandbox Code Playgroud)
您还可以使用带有字符的范围:
echo a{b..d} | tr ' ' ,
Run Code Online (Sandbox Code Playgroud)
如果您想要更大的范围,这尤其有用。