配置表中有一个黑名单的标签列表 是这样保存的 如 1-3,7-9
想把它展开成 1,2,3,7,8,9
如下所示
for i in {1..3,7..9}; do for j in {$i}; do echo -n "$j,"; done; done
1,2,3,7,8,9
详细步骤如下
# 替换-为..
echo "1-3,7-9" | sed 's/-/../g'
1..3,7..9
# 确定能够正确识别@
echo "1-3,7-9" | sed 's/-/../g' | xargs -I@ echo @
1..3,7..9
# 将@变量放到for中 报错
echo "1-3,7-9" | sed 's/-/../g' | xargs -I@ for i in {@}; do for j in {$i}; do echo -n "$j,"; done; done
zsh: parse error near `do'
请问错在哪呢? 正确的写法是?
先抛开
do
的问题,你试试:
然后试试:
楼主你 xargs 没有把输入切开。
然后看:
好像 mac 不支持
xargs
的-d
参数,有点苦恼。