我需要这样做,IFS=",";echo {1..5}
以便它可以输出1,2,3,4,5
而不是1 2 3 4 5
。如何使bash回显{1..5}并用逗号输出值?
使用Bash的内建函数:
这有点丑陋,因为我们需要分开5
来避免尾随逗号:
$ printf '%s,' {1..4}; echo 5
1,2,3,4,5
尽管由于printf
可以直接输出到变量,所以可以解决该问题,并使用参数扩展删除最后的逗号:
$ printf -v tmpvar "%s," {1..5}; echo "${tmpvar%,}"
1,2,3,4,5
或与"$*"
,使用的第一个字符连接IFS
。这破坏了全局状态,但是您可以通过在子shell或具有以下功能的函数中运行它来避免这种情况local IFS
:
$ IFS=,; set -- {1..5}; echo "$*";
1,2,3,4,5
如果限制在变量中,那么最简单的方法就是使用循环手动完成操作,因为您不能将变量用作括号扩展范围内的端点。同样,上限是一种特殊情况:
a=1; b=5
for (( i=a ; i<b ; i++ )); do
printf "$i,";
done;
printf "$b\n"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句